除了使用php的eval之外还有另一种调用此函数的方法吗?

时间:2011-09-27 19:35:28

标签: php eval anonymous-function

因此在数据库字段中有一个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,但我没有其他办法来做到这一点。

1 个答案:

答案 0 :(得分:9)

没有其他方法可以在PHP中评估代码。 (您可以将代码写入文件并include,但这只是一个隐藏的eval。)

你仍然应该重新考虑你的应用程序设计。评估数据库中的代码是 非常大的安全风险 :如果您的数据库遭到入侵(使用简单且常见的SQL注入攻击),您同时会给攻击者< strong>任意PHP代码执行。