PHP使用define存储mysql PDO连接的缺点

时间:2015-03-08 08:33:43

标签: php mysql pdo const

使用define存储mysql PDO连接的缺点是什么?例如,

define( 'DB_HOST', 'localhost' );
define( 'DB_USER', 'root' );
define( 'DB_PASS', 'xxx' );
define( 'DB_NAME', 'xxx' ); 
define( 'DSN', 'mysql:host='.DB_HOST.';dbname='.DB_NAME );

我一直在考虑像this example那样使用const,但它有局限性。

例如,

  1. 我无法'mysql:host='.DB_HOST.';dbname='.DB_NAMEconst进行define ( 'WEBSITE_DOCROOT', str_replace( '\\', '/', dirname( __FILE__ ) ).'/' ); define( 'SCHEME', isset( $_SERVER['HTTPS'] ) ? 'https://' : 'http://' );
  2. 我也不能在下面用const做这些,
  3. (其他配置信息......)

    define

    $config = array( 'DB_USER' => 'root', 'DB_PW' => 'password' ); 似乎符合目的,但我不确定它是多么安全以及我应该注意使用define for store设置信息的任何事情?有什么建议吗?

    另一种选择是将它们存储在一个类中,

    the end user can screw the file and break the entire app

    但是有人说这个选项是{{1}}(取自here)。用户如何搞砸文件?

1 个答案:

答案 0 :(得分:2)

任何define的内容都可用于PHP代码的所有部分,这可能会带来安全风险。如果使用变量,则可以限制数据的暴露,因为变量的范围有限。

  

但是有人说这个选项,最终用户可以搞砸文件并打破整个应用程序(取自这里)。用户如何搞砸文件?

这篇文章不是以网站用户的身份谈论用户,而是作为代码本身的用户(例如某人使用开源项目并编辑配置)。