【问题标题】:change variable value in a file in php在php中更改文件中的变量值
【发布时间】:2018-07-18 16:54:16
【问题描述】:

我有一个文件,它是一个小的 place_config.php 文件。

以我设置变量为例

<?php

//config file
$place_config = array(
    'credentials' => array(
        'sid' => 'some_value',
        'token' => 'some_token'
    )
?>

为了方便起见,我想从用户的管理面板更改sid 和token。我怎样才能有效地做到这一点。我理解的一种解决方案是将文件的内容放在一个字符串中,并将 $_REQUEST 的变量放在 post 请求之后将整个字符串写入文件?这是一种有效的方法吗?

【问题讨论】:

  • FWIW:php.net/manual/en/function.parse-ini-file.php 您正在描述基本的 CRUD。是的,POST 很可能是您使用 HTTP 完成此任务的方式。
  • @ficuscr 认为 ini 文件不适合我的情况,因为系统正在处理 .php 文件。还是我应该使用 post 方法?
  • 也许先阅读链接?这是我建议的原生 PHP 函数。 Goole 的教程有人正在使用该方法,并且可能显示了实现用户界面以编辑值的示例。你的问题太宽泛了。
  • 我已阅读,但该功能不是仅适用于 .ini 文件吗?
  • 不要挂断电话。它只是一个文件扩展名。大多数人使用数据库来存储这些东西。您想使用我建议的平面文件是一个好方法。 Read。还有more here

标签: php


【解决方案1】:

提交具有正确输入的表单,并在提交时调用update_place_config():

function update_place_config() {
    include('place_config.php');
    $place_config['credentials']['sid'] = $_POST['sid'];
    $place_config['credentials']['token'] = $_POST['token'];
    $output = '<?php $place_config = ' . var_export($place_config, true) . '; ?>';
    file_put_contents('place_config.php', $output);
    return $place_config; //if you want to get the new config
}

另一种选择:

$content = file_get_contents('place_config.php');
$content = preg_replace("/('sid' =>) '[^']+'/", "$1 '{$_POST['sid']}'", $content);
file_put_contents('place_config.php', $content);

我个人会将 JSON 存储在数据库中,如果需要是文件,则使用 JSON。

【讨论】:

  • 我正在尝试您的第一个选项。这是否也会取代所有的 cmets?就像我的文件中有 cmets 一样,它们是否会保持不变?
  • 第一个选项不起作用,它没有写入文件。
【解决方案2】:

我建议不要将配置数据存储在 php 文件中,而是将它们存储在可以通过 php 轻松读取/编辑的 json 文件中。

创建一个 json 文件,比如说 config.json。然后您可以使用$conf = json_decode(file_get_contents("config.json")) 加载配置。您可以更改 $conf 对象并将配置保存为file_put_contents("config.json", json_encode($conf))。

【讨论】:

  • 我不能使用 JSON 系统要求是只更改 .php
猜你喜欢
  • 2013-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-09
  • 2017-07-07
  • 2012-03-18
  • 1970-01-01
相关资源
最近更新 更多