0

我正在尝试制作一个简单的 PHP 设置文件。它是这样工作的:

<?php //settings.php
    $setting1 = "Something";
    $setting2 = "somethingelse";
?>

然后我有一个提交到另一个文件的 html 表单,我很好奇,如何将“settings.php”中的设置更改为表单中提交的数据,然后保存文件.. 如果这甚至可能. 我知道一种方法是

  1. 包括 settings.php
  2. 相应地更改设置
  3. 删除 settings.php
  4. 重新创建 settings.php 文件的字符串
  5. 将字符串写入新的 settings.php 文件

但我想知道是否有更简单的方法.. 因为我的 settings.php 很长.. 任何帮助都会很棒:3 如果这是一个愚蠢的问题,我很抱歉。我只是好奇天气是否有办法做到这一点。提前致谢!

编辑

经过四年的反思和成长,我发现这个想法很疯狂。如果要管理配置,最好的方法(恕我直言)是使用数组包含文件。永远不要修改配置(我在第 2.、3.、4. 和 5 点中要求过。

如果您正在寻找更深入的配置库,请查看Gestalt,这是我的一位同事编写的库。

例子

// main.php
<?php
    $config = include_once 'config.php';
    
    echo 'Configured name is: ' . $config['main']['name'];

// config.php
<?php
    return [
        'main' => [
            'name' => 'Nathan'
        ]
    ];
4

2 回答 2

1

这不一定是一个愚蠢的问题,但这是一个非常愚蠢的想法。

考虑有人提交值为“rmdir('/');”的表单。

如果你真的想做这样的事情,你最好使用像 JSON 这样不可执行的东西。

于 2013-06-06T17:09:34.847 回答
0

settings.php 是否需要是 .php 文件?如果没有,您可以创建一个像这样的表单:

<form id="settings" action="submit.php" method="post">
Setting one: <input type="text" name="set1" value="" width="10" ><br />
Setting Two: <input type="text" name="set2" value="" width="10"><br />
    Setting Three: <input type="text" name="set3" value="" width="10"><br />
<input type="submit" value="Submit settings"  >
</form>

然后创建一个“submit.php”,以可用的格式将文件写入服务器:

$filename = $_POST['filename'] . '.csv';
$export = $_POST['export'];
$writer = fopen($filename, 'w') or die('cannot create');
fwrite($writer, $export . "\n");
fclose($writer);

header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename='.basename($filename));
readfile($filename);
unlink($filename);

exit();

我认为这应该适合您的目的。

于 2013-06-06T17:13:51.397 回答