Php获取变量并存储到文件中,抛出错误


Php get variable and store to file, throws error

所以我有这个代码,

<?php
header('Content-type: text/plain');
$var_str = $_GET['t0'];
$var = "<?php'n'n'$$text = $var_str;'n'n?>";
file_put_contents('temps.php', $var);
include 'temps.php';
echo $text;
?>

我希望它存储它从中得到的变量http://Mylink.com/apage.php?t0=3(或者基本上是3)到temps.php?当我转到该页面时,会出现以下错误。

致命错误:调用/home/content/f/e/d/apage.php中3
行的未定义函数3()

这将只保存$_GET['t0']的值:

$content = $_GET['t0'].PHP_EOL;
file_put_contents('temps.php', $var);

其他人看起来真的很不安全,我不明白这有什么意义。你能粘贴temps.php想要的最终结果吗?

编辑在这种情况下,可以使用这个来将内容保存到一个txt文件:

somefile.php

 $content = $_GET['t0'];
 file_put_contents('temps.txt', $content);

将其放入temps.hp:

temps.php

$text = file_get_contents('temps.txt');

和echo$text;将工作

您正在使用它为写入.php准备一些输出,包括:

 $var = "<?php'n'n'$$text = $var_str;'n'n?>";

虽然这种方法还可以,但您在这里忽略了一些语法问题。

首先你写了'$$text。这将导致在$var输出变量中保留一个文本$。但是$text将消失,因为它被插入$var字符串中的一个空字符串中。

$text在您的代码中是一个未定义的变量。将error_reporting()提升至E_ALL以注意此类问题。

因此,最终,这将成为您的输出temps.php文件:

<?php  $ = 3; ?>

为了在那里获得一个合适的变量名称,因此更好地使用:

$var = "<?php  '$text = $var_str;   ?>"; 
#                ^

(这里只有一个逃脱的美元标志,没有双倍的$$。)

为了使代码的部署更加安全,您还应该在之前转义或清除$var_str(这可能是用户输入)。此处使用intvalvar_export

$var_str = $_GET['t0'];
$var_str = var_export($var_str, 1);
$var = "<?php   '$text = $var_str;    ?>";

然后您的输出文件变为:

<?php  $text = 3; ?>

但也适用于字符串。

相关文章: