4

在我站点的管理区域有一个表单,用于填写站点使用的 mysql 数据库的主机名、用户名和密码。目前这些值被硬编码到一个 php 类中。但是谁可以链接它,以便表单可以编辑 php 类中的变量(并将结果保存在服务器上,换句话说,变量是硬编码的)。我通常会将这样的东西保存在数据库中,但显然这是无法做到的。

4

2 回答 2

5

创建一个配置文件,并授予您的 Web 服务器对其的写入权限。然后只需编写一个将数据库配置保存到此文件的脚本即可。例如

$fh = fopen('config.php', 'w');
fwrite($fh, chr(60) . "?php\n");
fwrite($fh, sprintf("define('DB_HOST', '%s');\n", addslashes($_POST['DB_HOST'])));
fwrite($fh, sprintf("define('DB_USER', '%s');\n", addslashes($_POST['DB_USER'])));
fwrite($fh, sprintf("define('DB_PASS', '%s');\n", addslashes($_POST['DB_PASS'])));
fclose($fh);
于 2010-07-25T09:34:28.880 回答
4

将值保存在配置文件中。并确保无法从网络访问它。

最简单的解决方案是将值保存在配置数组中 - 用户输入值,您从中生成一个数组,然后file_put_contents("config.php", "<?php $config = " . var_export($config)). 每当您需要配置数组时,使用此方法,您所需要做的就是include config.php它就在那里。

这是未经测试的代码,仅用于示例目的。根据您的情况,您可能需要解决竞争条件,file_put_contents这还不够。上面代码的要点是:var_export返回有效的 php 代码,你可以eval(如果你够邪恶的话)或者回显到一个文件并在以后包含它。

于 2010-07-25T09:36:13.660 回答