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