有什麼辦法可以執行在mysql行中設置的php腳本?從mysql行執行php腳本
比如我在我的數據庫中有一個表:ID,腳本
每一行都有自己的ID &劇本,我希望做一個PHP循環使用的PHP腳本來執行所有行它。
有什麼辦法可以執行在mysql行中設置的php腳本?從mysql行執行php腳本
比如我在我的數據庫中有一個表:ID,腳本
每一行都有自己的ID &劇本,我希望做一個PHP循環使用的PHP腳本來執行所有行它。
要看你有它存儲在數據庫中... 如果是原始PHP代碼,你可以做
$rows = whatever_query_type_you_are_using("SELECT script from table where id > 10");
foreach($rows as $row){
exec('php '.escapeshellcmd($row['script']));
}
,或者如果它指向一個頁面像這樣的工作
foreach($rows as $row){
exec('php -f '.$row['script']);
}
您可以使用此:
eval('your script');
小心 eval()語言結構非常危險,因爲它允許執行任意PHP代碼。它的使用因而氣餒。如果您已經仔細覈實沒有其他選擇而不是使用此構造,請特別注意不要將任何用戶提供的數據傳遞給它,而不事先進行適當的驗證。
它通常是一個壞主意,做這樣的事情,因爲它可以允許一些重大的安全漏洞。
一個比較好的主意通常是在ActionID表中有一個ID,在最終執行它之前,您的PHP腳本可以用它來驗證操作。例如:
$actions = array('somescript.php','someotherscript.php','another.php');
$rows = query("SELECT ActionId FROM table");
foreach ($rows as $row) {
if (exists($actions[$row['ActionId']]))
include $actions[$row['ActionId']];
}
}
這有效地防止了執行任意代碼的問題。您只能執行一組預定義的事情之一。
即使在表中執行文件路徑也是危險的。
如果您絕對需要,那麼前面提到的eval function可能就是您要查找的內容。但是我會阻止你使用它。
http://php.net/manual/en/function.eval.php – Dimi