2017-03-03 106 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可能就是您要查找的内容。但是我会阻止你使用它。