繁体   English   中英

如何使用PHP在另一个PHP脚本中编辑变量?

[英]How do i use PHP to edit a variable in another PHP script?

我目前正在制作基本的PHP应用程序/页面,但是,我遇到了一个问题。 我需要制作一个脚本,该脚本将在另一个脚本中编辑变量并将其设置为某些变量。

例如,一个脚本会说:

$test = "username";

而另一个脚本会将该变量设置为其他变量。

因此,一旦PHP脚本的(index.php)页面加载完毕,PHP脚本会将第一个脚本(variables.php)更改为:

$test = "username20";

但是,我不知道该怎么做。 有什么办法可以做到这一点?

编辑:

我需要一个像这样的基本自动编辑器,因为该文件是配置文件(因此,基本上,我需要其中的文本永久存在,这意味着“会话”将不起作用。)。

谢谢您的帮助。

更好地使用会话变量。 加载会话后,它们在所有PHP脚本中均有效。

http://php.net/manual/zh/book.session.php

您应该使用fopen打开文件,使用fread读取文件以搜索所需的变量,然后使用fwrite进行写入。

$fn = "variables.php"; 
$file = fopen($fn, "w+"); 
$size = filesize($fn); 
$text = fread($file, $size); 
fwrite($file, 'text'); 
fclose($file); 

在我看来,您有几种选择。 如您所述,这将是一些配置文件,因此很可能您将具有几个不同的配置选项。 尽管在您的示例中,您将值分开了,但取一些集合更有意义。 而且您的配置文件可能如下所示:

<?php

$config = array(
    'dbname' => 'my_awesome_db',
    'dbhost' => 'localhost',
    'dbuser' => 'notroot',
    'dbpass' => 'secret',
);

使用PHP,您可以更改上述数组并将其写回到文件中:

<?php

require __DIR__ . '/config.php';

$config['dbhost'] = '10.1.0.1';

file_put_contents(__DIR__ . '/config.php', '<?php $config = ' . var_export($config, true) . ';');

另一种方法是使用JSON格式:

{
    "foo": "bar",
    "baz":"qux"
}

使用PHP,您可以更改上述JSON并将其写回到文件中:

<?php

$config = json_decode(file_get_contents(__DIR__ . '/config.php'), true);

$config['dbhost'] = '10.1.0.1';

file_put_contents(__DIR__ . '/config.php', json_encode($config, JSON_PRETTY_PRINT));

以上只是两个选择。 您也可以写入ini文件,数据库或您喜欢的任何格式。

一些注意事项:

  • 如果文件包含敏感信息,则必须确保将其放置在文档根目录之外,以防止意外将其公开(例如,服务器配置错误或人为错误)
  • 如果并发将成为一个问题,您要么必须研究锁定机制,要么使用数据库让它为您处理
  • 如果有任何一种形式的任何形式的用户输入或与任何形式的用户输入保持联系,则适用常规规则
  • 尽管拥有这样的配置文件没有内在的错误。 它不是灵丹妙药,仅在有意义时使用。 对于某些事情,根据用例,最好使用数据库。

相关读物:

演示:

这取决于您想要什么。 如果您仅为自己创建某种“控制面板”; 您可能希望对密码进行硬编码并使用会话/ cookie保持“登录”状态。

如果要多个人使用它,甚至是成员系统,则需要一个数据库。

有基于文本文件的数据库,但是我认为较小会更好。

更新:

您确实不能做到这一点,可以,但是这将是非常糟糕的做法。

如果您要编辑的内容不是敏感信息,则可以写入/读取/编辑常规文件(例如info.txt或info.dat)

另一个更新如果您坚持要编写.php变量,从技术上讲,您可以...

使用文件功能访问(例如:data.php)文件,您可以按字面意思写:$ user_password =“ blah”;

然后在主文件中包含data.php,然后将定义$ user_password。 如果要编辑,请使用文件功能来更新data.php文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM