如何避免硬编码数据库连接密码?

How can I avoid hardcoding the database connection password?

我正在做一个学校项目(编写一个网站),我 运行 遇到了为连接到我们的数据库提供密码的问题。由于我们的开源许可,我们必须发布源代码,但这意味着每个人都可以连接到数据库并查看数据。

目前我们的连接(php 文件)如下所示:

$host="************";
$password="************";
$this->conn = new mysqli($host, $user, $password, $dbname).mysqli_connect_error());

现在我的问题是:如何提供连接到数据库的密码而不需要写 $password=...

使用单个文件来包含您的配置变量并在共享您的代码时排除该文件。

例如:

require_once('config.php');
$this->conn = new mysqli($config['db']['host'], $config['db']['user'], $config['db']['pass'], $config['db']['dbname']);

config.php 文件将包括:

$config['db']['username'] = 'user';
$config['db']['password'] = 'pass';
...

您 could/should 将其扩展为包括主机、端口、数据库名称等。

好的,这是带有 ini 文件的文件:

xxx.php

<?php

    $db_params = parse_ini_file( dirname(__FILE__).'/db_params.ini', false );

    // .....

    $this->conn = new mysqli($db_params['host'], $db_params['user'], $db_params['password'], $db_params['dbname'], $db_params['port'], $db_params['socket']).mysqli_connect_error());

    // ...

?>

db_params.ini

host=mysql.example.com
port=3306
socket=
user=testuser
password=myPasswort
dbname=myDatabase