【问题标题】:How to edit the variables of a php file with another php file如何用另一个php文件编辑一个php文件的变量
【发布时间】:2017-12-09 22:44:59
【问题描述】:

好的,所以我想做一些类似于 Simple Machine Forum 如何在论坛的管理面板中编辑某些变量的操作。例如 我有一个 settings.php 文件。我希望 tool.php 打开并在 settings.php 中找到所有声明的 php 变量,例如 $background_color='Orange' 并在 tools.php Background Color: Orange 中的表单标签内输出,一旦更改为 'Purple' 并提交,用 'Purple' 替换 'Orange' 现在如果我打开 'settings.php' 文件中的变量现在是 "$background_color='Purple'" 无需手动编辑。我可以只提交变量的新数据并替换旧数据。

【问题讨论】:

  • This post 可以帮到你。
  • 这是一个出了名的不稳定情况。首先,从安全的角度来看,有许多类型的权限情况几乎可以保证这不会起作用。这也可能是一个巨大的安全漏洞,因为当您拥有一个可以编写 .php 文件的系统时,您犯或用户犯的任何错误都是利用和特权代码执行的主要载体。总的来说,这是一个坏主意。大多数软件包都有一个简单的受限 config.php 文件,它只需要数据库凭据,然后将大部分 name=value 变量保存在数据库本身中。

标签: php


【解决方案1】:

为了保持数据的持久性,您需要将数据存储在数据库或单独的文件中,例如JSON 文件。然后,您可以在任何需要的地方使用该数据。

这是一个使用 JSON 文件的示例。

setting_variables.json:

{
    "background": "red",
    "color": "white"
}

settings.php

$settings = json_decode(file_get_contents("settings_variables.json"), true);
$background = $settings['background'];

工具.php

include ("settings.php");

// If form is posted
if(isset($_POST['submit'])){
    /* Updating variables in JSON file*/

    //Get settings_json file
    $setting_vars = json_decode(file_get_contents('settings_variables.json'), true);

    // Update variable
    $background = $setting_vars['background'] = $_POST['color'];

    // Store variable value to JSON file
    file_put_contents("settings_variables.json", json_encode($setting_vars));
}

?>

<form method="post" <?php echo "style='background-color:".$background . "'"; ?>>
    <select name="color">
    <option value="red">red</option>
    <option value="blue">blue</option>
    <option value="orange">orange</option>
    <option value="yellow">yellow</option>
    <option value="purple">purple</option>
  </select>
  <input type="submit" name="submit"/>
</form>

【讨论】:

  • 谢谢:D 我想避免使用数据库选项,我已经考虑过了。
【解决方案2】:

您可以使用数据库来执行此操作 从 settings.php 中的数据库中获取该值 并从你的 tools.php 或任何你想要的地方更新它。

【讨论】:

    【解决方案3】:

    要加载tool.php中的变量,只需include("settings.php")

    要更改设置,您需要修改 settings.php。

    最简单的方法应该是用新的正则表达式替换旧值,例如["\$background_color *= *'\d*'"] 并将其替换为 ["\$background_color = 'Purple'"]

    只需用新字符串覆盖文件即可。

    我不确定我是否正确地转义了所有内容,但这样你应该能够替换整个文件。

    http://php.net/manual/en/function.preg-replace.php

    缺点是,如果设置文件非常大,这可能需要一些时间,尽管这对您的用例来说可能不是问题。

    或者,您可以逐行读取文件并替换它(手动或再次使用正则表达式替换。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-30
      • 2020-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多