将PHP变量保存到文本文件中

Aad*_*adi 23 php file

我想知道如何将PHP变量保存到txt文件,然后再次检索它们.

例:

有一个输入框,提交后,输入框中写入的内容将保存到文本文件中.稍后,结果需要作为变量返回.所以我要说变量是$ text我需要保存到文本文件并能够再次检索它.

San*_*tty 44

这应该做你想要的,但没有更多的背景,我无法确定.

将$ text写入文件:

$text = "Anything";
$var_str = var_export($text, true);
$var = "<?php\n\n\$text = $var_str;\n\n?>";
file_put_contents('filename.php', $var);
Run Code Online (Sandbox Code Playgroud)

再次检索:

include 'filename.php';
echo $text;
Run Code Online (Sandbox Code Playgroud)

  • 糟糕的方式,因为安全问题。您可以包含一些带有漏洞的代码。 (2认同)
  • 请注意,返回值也是可能的:`&lt;?php return $var_str`。然后您可以为包含的数据使用不同的名称,例如 `$someText = (include 'filename.php');` (2认同)

Chr*_*ian 39

就个人而言,我使用file_put_contents和file_get_contents(这些是fopen,fputs等的包装器).

此外,如果您要编写任何结构化数据,例如数组,我建议您序列化和反序列化文件内容.

$file = '/tmp/file';
$content = serialize($my_variable);
file_put_contents($file, $content);
$content = unserialize(file_get_contents($file));
Run Code Online (Sandbox Code Playgroud)


duc*_*y81 6

(对不起,我现在还不能发表评论,否则我会)

为了增加 Christian 的答案,您可能会考虑使用json_encodeandjson_decode代替serializeandunserialize来保证您的安全。请参阅 PHP 手册页中的警告:

警告

不要将不受信任的用户输入传递给 unserialize()。由于对象实例化和自动加载,反序列化可能导致代码被加载和执行,恶意用户可能能够利用这一点。如果需要将序列化数据传递给用户,请使用安全、标准的数据交换格式,例如 JSON(通过 json_decode() 和 json_encode())。

因此,您的最终解决方案可能具有以下内容:

$file = '/tmp/file';
$content = json_encode($my_variable);
file_put_contents($file, $content);
$content = json_decode(file_get_contents($file), TRUE);
Run Code Online (Sandbox Code Playgroud)