2012-11-07 13 views
-2

我想弄清楚如何將用戶提供的$ _POST或$ _GET變量提供給.php文件,以便設置變量等。那麼,我將如何獲得下面的代碼來工作,以便代替編寫代碼,例如插入$ _GET變量,或者在下面的描述中插入$ derp。PHP - 使用設置變量fwrite PHP數據

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

所以你想要文件包含'<?php echo「那麼工作!」 ?>'? – Musa

+1

所以你想從查詢參數中生成PHP代碼?你爲什麼想這樣做(難以置信的不安全)? –

+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在這裏?

上述代碼遍歷$_GET$_POST,combined的所有數組元素。
通過它創建一個要寫入文件的行數組。
然後這個數組將被join()編輯成一個字符串,使用NEWLINE ascii字符作爲膠水。

假設該腳本被稱爲用下面的查詢字符串:

?foo=bar&bar=baz 

文件/path/to/file.php然後將含有(file_put_contents):

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

上面的例子不支持這樣foo[bar]=baz嵌套查詢參數。

+0

你能證明這是如何工作的嗎?我不熟悉file_put_contents。你能否使用我給出的變量? –

+0

添加說明,參見上文。 – glasz

+0

感謝所有想要幫助的人,但我明白了,我會接受你的話,並說這個人能工作,因爲我是個好人。 –