从mysql行执行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