2010-07-25 127 views
3

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

+0

可能重复的[PHP,阅读文件](http://stackoverflow.com/questions/2237291/php-reading-file) – Gordon 2010-07-25 10:09:10

+1

哦,不要这么迂腐,这是关于写作,而不是阅读文件。 – 2010-07-25 10:32:35

回答

4

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

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

这是未经过测试的代码,仅用于举例目的。根据你的情况,你可能需要解决竞争条件,file_put_contents是不够的。上面代码的主要点是:var_export返回有效的php代码,你可以eval(如果你足够邪恶的话)或回应到一个文件,并在稍后加入。

+0

这是如何工作的,如果我想在第一次创建配置文件时进行修改。 – 2010-07-25 09:55:36

+0

@Jonathan您可以修改已经加载的'$ config'数组,然后再次执行'file_put_contents'部分。 – Maerlyn 2010-07-25 10:03:17

+0

所以只需重新创建文件? – 2010-07-25 10:27:38

5

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

$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); 
+0

这是如何工作的,如果我想在第一次创建配置文件时对其进行修改。 – 2010-07-25 09:45:53

+0

你会把配置文件创建代码放在另一个脚本editconfig.php中。 – jmz 2010-07-25 10:38:36

相关问题