【问题标题】:Put config variables into php file将配置变量放入php文件
【发布时间】:2016-01-07 05:01:12
【问题描述】:

我正在使用的系统有自己的安装页面来配置数据库连接。基本上,用户正在填写一些$_POST 字段,例如host, dbname, password 等。然后一旦他继续进行,我想将所有这些变量存储在一个文件中。

最终的文件应该是这样的:

<?php
    $config["db"]["host"] = "host";
    $config["db"]["username"] = "user";
    $config["db"]["password"] = "user_pass";
 ?>

但不管怎样,输出是这样的:

<?php
    $config["db"]["host"] = "";
    $config["db"]["username"] = "";
    $config["db"]["password"] = "";
?>

因此,最后引号中的所有数据似乎都消失了。 这是我的代码:

$file = 'core/database.core.php';

    $content = "<?php \r\n";
    $content .= '$config["db"]["host"] = "' . $_POST['db_host'] . '";' . "\r\n";
    $content .= '$config["db"]["username"] = "' . $_POST['db_user'] . '";' . "\r\n";
    $content .= '$config["db"]["password"] = "' . $_POST['db_pass'] . '";' . "\r\n";
    $content .= "?>";

file_put_contents($file, $content);

$content 变量的 Var 转储仅输出以下内容:

string(114) ""

浏览器源代码显示如下:

string(114) "<?php 
$config["db"]["host"] = "127.0.0.1";
$config["db"]["username"] = "";
$config["db"]["password"] = "";
?>"

我一直在尝试多种方式,但我不知道如何才能以我想要的方式正常工作。有什么建议吗?

【问题讨论】:

  • php 标签正在被执行。
  • var 转储显示 $content 是一个 114 个字符的字符串。您看不到内容的原因是您可能使用浏览器查看此内容,而 之间的所有内容均未显示。在浏览器中打开源代码。也尝试做 var_dump($_POST) 以确保 post 数据传输正确。
  • @esel $_POST 数据包含它应该包含的所有内容。事实上,是的 - 浏览器中的源代码显示它。主帖已编辑。

标签: php file variables config file-put-contents


【解决方案1】:

尝试使用 var_export();

    $config["db"]["host"] = $_POST['db_host'];
    $config["db"]["username"] = $_POST['db_user'];
    $config["db"]["password"] = $_POST['db_pass'];

  $content = "<?php ".PHP_EOL." \$config = ".var_export($config,true)."; ".PHP_EOL." ?>";

如果这不起作用,请先检查所有字段是否设置正确!!!

【讨论】:

  • 但是 esel 关于源代码的说法是你的问题;)在你的代码中没有第一个'
  • 或执行 print htmlentities(var_dump($arr,true)); 以查看您创建的代码。
  • 建议查看文本文件,因为它们是:header('Content-Type: text/plain') - 而不是试图让 html 表现得像文本
  • @birdspider 这只是一个开发/调试提示;)
猜你喜欢
  • 1970-01-01
  • 2018-07-04
  • 2011-10-01
  • 1970-01-01
  • 2012-06-15
  • 2014-02-18
  • 2012-04-30
  • 1970-01-01
  • 2023-03-06
相关资源
最近更新 更多