如何在PHP文件中设置保存变量?

时间:2012-04-13 08:00:25

标签: php javascript html

例如,我有一个config.php:

//default config
$name = 'default name';
$mail = 'default mail';

我想用一个表单让用户编辑变量,一切就像使用数据库一样,但在这种情况下区别在于它是在PHP文件上实现

所以,在我得到$_POST['name']; $_POST['mail'];后,如何修改变量并将其保存在PHP中?

3 个答案:

答案 0 :(得分:1)

$config = file_get_contents('config.php');

那应该将配置文件读成字符串。然后,您可以搜索字符串或使用正则表达式将$name值替换为$_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);

答案 1 :(得分:1)

配置文件需要是PHP吗?您可以使用var_export

将快速配置阵列合并到外部文件中

配置文件config.php

$config = array(
  'name' => 'My Name',
  'email' => 'some@one',
);

加载/保存配置文件:

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'])将从用户提供的值中删除不安全数据(非单词字符)。

答案 2 :(得分:-1)

您可以使用file_put_contents函数将配置写入文件,并使用自定义函数来构建内容本身,如下所示:

function generateConfig(){
    return "//default config"
    . '$name' . " ='{$_POST['name']}';"
    . '$mail' . " ='{$_POST['mail']}';";
}

file_put_contents("file.config", generateConfig());

这是一个解决方案,但更好的方法是使用JSON,XML或数据库。