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

Pau*_*ulS 5 php eval anonymous-function

所以在数据库字段中有一个php函数.这是它的样子:

'$put_fname_fn = function($filename) {
    return $filename.'.Z';
};'
Run Code Online (Sandbox Code Playgroud)

我正在执行它:

$code = fetchFromDatabase(); // Get the function string
eval($code);
$put_fname_fn('MYFILE.TXT'); // Convert it to MYFILE.TXT.Z
Run Code Online (Sandbox Code Playgroud)

是否有更优雅的方式来调用用户功能?我尽量避免使用eval,但我没有其他方法来做到这一点.

Nik*_*kiC 9

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

你应该重新考虑你的应用程序设计.从数据库中评估代码是一个非常大的安全风险:如果您的数据库受到攻击(使用简单和常见的SQL注入攻击),您同时会为攻击者提供任意PHP代码执行.

  • 在这种特殊情况下,没有过多的方法来评估PHP中的代码,代码可以被标记化,只需要部分并使用`create_function`进行评估,但这仍然无法帮助任何人. (2认同)