PHP - 使用设置变量fwrite PHP数据

时间:2012-11-07 20:09:27

标签: php fwrite

我试图弄清楚如何将.fp文件转换成一个.php文件,该文件包含通过$ _POST或$ _GET给出的变量,由用户提供设置变量等。那么,我将如何使下面的代码工作,以便代替编写代码,例如插入$ _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);
?>

1 个答案:

答案 0 :(得分: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正在进行中?

以上代码遍历$_GET$_POSTcombined的所有数组元素。
通过它,它创建了一个要写入文件的行数组 然后使用NEWLINE ascii字符作为粘合剂将此数组join()编辑成字符串。

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

?foo=bar&bar=baz

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

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

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