-1

我试图弄清楚如何使用通过 $_POST 或 $_GET 给出的变量写入 .php 文件,这些变量由用户提供以设置变量等。那么,我将如何让下面的代码工作,而不是编写代码,例如插入一个 $_GET 变量,或者在下面的描述中,作为 $derp。

<?php
$derp = "working!";
$something = '<?php echo "Well Thats {$derp}' ?>';
$file = fopen("worked.php","w");
if (fwrite($file,$something) > 0) {
echo "Fwrite Successful!";  
}
fclose($file);
?>
4

1 回答 1

0

虽然这个用例看起来很奇怪,但以下应该可以工作:

$data = array('<?php');
foreach ($_REQUEST as $key => $value) {
    $data[] = "\$$key = \"$value\";";
}
$data[] = '?>';

$data = join("\n", $data);
file_put_contents('/path/to/file.php', $data);

当心:此代码会带来若干安全风险。

WTF在这里进行吗?

上面的代码遍历了 and 的所有数组元素,并$_GET结合。 通过它创建一个要写入文件的行数组。 然后,该数组将通过使用 NEWLINE ascii 字符作为胶水被编辑成一个字符串。 $_POST

join()

假设使用以下查询字符串调用此脚本:

?foo=bar&bar=baz

该文件/path/to/file.php将包含(file_put_contents):

<?php
$foo = "bar";
$bar = "baz";
?>

上面的示例不支持嵌套查询参数,例如foo[bar]=baz.

于 2012-11-07T20:17:11.473 回答