因此在数据库字段中有一个php函数。这是它的样子:
'$put_fname_fn = function($filename) {
return $filename.'.Z';
};'
我正在执行它:
$code = fetchFromDatabase(); // Get the function string
eval($code);
$put_fname_fn('MYFILE.TXT'); // Convert it to MYFILE.TXT.Z
是否有更优雅的方式来调用用户功能?我尽量避免使用eval,但我没有其他办法来做到这一点。
答案 0 :(得分:9)
没有其他方法可以在PHP中评估代码。 (您可以将代码写入文件并include
,但这只是一个隐藏的eval
。)
你仍然应该重新考虑你的应用程序设计。评估数据库中的代码是 非常大的安全风险 :如果您的数据库遭到入侵(使用简单且常见的SQL注入攻击),您同时会给攻击者< strong>任意PHP代码执行。