如何设置将变量保存在PHP文件中?
例如,我有一个config.php文件:如何设置将变量保存在PHP文件中?
//default config
$name = 'default name';
$mail = 'default mail';
而且我想用一个表格让用户编辑变量,一切就像使用数据库,但在这种情况下,不同的是它在PHP文件上实现
因此,我得到$_POST['name']; $_POST['mail'];
后,如何修改该变量并将其保存在该PHP中?
配置文件需要在PHP?您可以快速配置阵列黑客一起到使用var_export
配置文件config.php
$config = array(
'name' => 'My Name',
'email' => '[email protected]',
);
加载/保存配置文件:
include 'config.php'; // Bring config into the current namespace
if ($_SERVER['REQUEST_METHOD'] == 'POST') { // Update on POST
$config['name'] = $_POST['name'];
$config['email'] = $_POST['email'];
file_put_contents('config.php', sprintf("<?php\n%s\n", var_export($config, true)));
}
print_r($config);
与任何用户输入你应该请务必过滤白名单中的输入以清除危险数据。例如,preg_replace('/\W/', '', $_POST['name'])
将从用户提供的值中删除不安全的数据(非单词字符)。
它会错过 ?>和$字符串= 后我使用您提供的代码感谢您更改文件。 – user782104 2012-04-13 21:30:05
D'oh,你说得对。我已经更新了答案。另外请注意,'config.php'中不需要结尾'?>',因为EOF(文件结束)的作用与'?>'相同, – leepowers 2012-04-13 23:51:01
您可以使用file_put_contents函数写入文件的配置和自定义函数来构建内容本身是这样的:
function generateConfig(){
return "//default config"
. '$name' . " ='{$_POST['name']}';"
. '$mail' . " ='{$_POST['mail']}';";
}
file_put_contents("file.config", generateConfig());
这是一个解决方案,但更好的办法是使用JSON,XML或数据库。
$config = file_get_contents('config.php');
应该将配置文件读入字符串。然后,您可以搜索字符串或使用正则表达式来替换值和$_POST['name']
值。
这应该工作
$name = $_POST['name'];
$mail = $_POST['mail'];
$config = file_get_contents('config.php');
$pos = strpos($config, '$name');
$config = substr_replace($config, '$name = \'' . $name . '\'', $pos, strpos($config, ';', $pos) - $pos);
$pos = strpos($config, '$mail');
$config = substr_replace($config, '$mail = \'' . $mail . '\'', $pos, strpos($config, ';', $pos) - $pos);
file_put_contents('config.php', $config);
不要。严重的是,不要。如果您想使用可编辑数据,请使用数据库或使用格式合理的结构化配置文件(如ini,JSON,XML等)。试图以编程方式编辑PHP是非常重要的。 – Quentin 2012-04-13 08:03:48
这个配置文件基本上只是一个带有设置的文本文件吗? – Jack 2012-04-13 08:04:53
它只是一个带有变量eg.id,pwd,服务器名称等的文本文件...这就是权利。 – user782104 2012-04-13 08:07:21