2014-06-12 61 views
0

我开发一个简单的PHP应用程序,它需要连接到数据库 这是造成部分代码连接到数据库避免硬编码证书mysqli php?

private $mysqli; 

public function __construct() 
{ 
    $this->mysqli = new \mysqli("localhost", "root", "password", "mydb"); 
} 

我的问题:如何避免硬编码的凭据,客户要求我以避免这个?

我应该在哪里设置这些设置?

+1

如果是这样的话,那么创建一个配置文件 – user1978142

+0

如果客户端不需要硬编码凭据,他是如何让他们进入?他想编辑它们吗?或者让他们每次交互式地通过网络表单输入并将它们存储在客户端浏览器的cookie中? –

+0

我会建议和ini或XML配置文件,如果它需要手动编辑,或者序列化JSON文件,如果编程方式处理 – Steve

回答

1

使用config文件:

require_once("../path-to-your-config/config.php"); 

用法示例:

require_once("../path-to-your-config/config.php"); 

class ABC { 

    private $mysqli; 

    public function __construct() 
    { 
     $this->mysqli = new \mysqli(Conf::HOST, Conf::USER, Conf::PASSWORD, Conf::DB); 
    } 
} 
1

正如@ user1978142所说,配置文件最适合存储这种信息。最好这个配置文件应该存储在服务器目录之外(所以没有人可以意外地获得外部访问)。此外,你应该确保访问此文件仅限于选择用户

0

创建一个名为credentials.php一个单独的文件,并把它放在一个文件夹不是root文件夹或限制对文件夹及其内部文件的访问。在这个文件中,分配所有你想要的值$server,$username,等,只要你需要它们,只需使用require_once函数,以便你可以访问它们。

如果是从一个数据库更改为另一个数据库,您也可以考虑使用PDO

+1

命名文件.credentials.php - 大多数Apache服务器不提供以点开头的文件,这增加了一点安全。并使其只能读取服务器进程运行的守护程序用户帐户。 –

+0

@AlexMonthy当我听到这样的迷信时,我总是会问这个问题:当然,你总是按照这个建议自己,是不是? –

+0

@YCS:这取决于。对于我以后不监督的客户工作,是的。为了我自己的目的,没有。但是,我只对自己负责。 –