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

有帮助吗?

解决方案

将这些值保存在配置文件中。并确保它无法从web访问。

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

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

其他提示

创建配置文件,并授予您的Web服务器对其的访问权限。然后,它只是编写脚本的简单问题,将DB Config保存到此文件。例如。

$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);
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top