我有這個一個真正的問題,不能得到它的工作運行類似example.php?variable = 1的東西。
但是我可以使用exec命令獲得一個單獨的文件,最後沒有?variable = 1。
我決定做的是根據我想發送的變量動態更改模板文件的內容。這個文件被稱爲template.php,幷包含所有通常以$ _GET運行的代碼。而不是使用$ _GET,將變量的值設置在頂部。這行代碼然後被搜索並替換爲您選擇的任何值。
然後我保存了這個新文件並運行它。
在以下示例中,我需要更改SQL查詢 - 模板文件的行$ sql =「ENTER SQL CODE HERE」;.我還需要更改頂部變量的值。 template.php中的行是$ myvar = 999999;下面的代碼將template.php中的這些行更改爲新值。
//Get the base file to modify - template.php
$contents=file_get_contents("template.php");
$sql="SELECT * FROM mytable WHERE foo='".$bar."'";
$contents=str_replace("ENTER SQL CODE HERE",$sql,$contents);
//Another search
$contents=str_replace("999999",$bar,$contents);
$filename="run_standalone_code".$bar.".php";
//If the file doesnt't exist, create it
if(!file_exists($filename)){
file_put_contents($filename, $contents);
}
//Now run this file
$cmd="/usr/local/bin/php ".$filename." >/dev/null &";
exec($cmd);
這是一個非常糟糕的方式來做到這一點。首先,它是escapeshellarg()而不是'addslashes()'。 – Christian 2011-04-11 09:42:32