2017-03-03 105 views
0

有什麼辦法可以執行在mysql行中設置的php腳本?從mysql行執行php腳本

比如我在我的數據庫中有一個表:ID,腳本

每一行都有自己的ID &劇本,我希望做一個PHP循環使用的PHP腳本來執行所有行它。

+0

http://php.net/manual/en/function.eval.php – Dimi

回答

0

要看你有它存儲在數據庫中... 如果是原始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']); 
} 
1

您可以使用此:

eval('your script'); 

小心 eval()語言結構非常危險,因爲它允許執行任意PHP代碼。它的使用因而氣餒。如果您已經仔細覈實沒有其他選擇而不是使用此構造,請特別注意不要將任何用戶提供的數據傳遞給它,而不事先進行適當的驗證。

http://php.net/manual/en/function.eval.php

0

它通常是一個壞主意,做這樣的事情,因爲它可以允許一些重大的安全漏洞。

一個比較好的主意通常是在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可能就是您要查找的內容。但是我會阻止你使用它。