PHP eval不会产生预期的结果

时间:2016-08-18 08:37:40

标签: php eval

尽管建议不要使用eval(),但我必须将它用于我项目的某个部分。

一般情况下,我想为系统管理员提供上传包含php代码的文件的方法 - php代码存储在数据库中,并在满足某些条件时最终加载并执行。

由于这是一个只能由少数人访问的内部网应用程序,因此安全方面并不严重。

eval()执行的php代码可以是任何可能的代码。

$some_array = array();

$some_array[0] = 'Hello World';

echo $some_array[0];

此代码的输出只是Hello World。

eval("

$some_array = array();

$some_array[0] = 'Hello World';

echo $some_array[0];

");

理论上,此代码的输出应该相同,但实际上并非如此。

我收到此错误消息:

Notice: Undefined variable: some_array in C:\xampp\htdocs\test.php on line 8

Notice: Undefined variable: some_array in C:\xampp\htdocs\test.php on line 8

Notice: Undefined variable: some_array in C:\xampp\htdocs\test.php on line 10

Parse error: syntax error, unexpected '=' in C:\xampp\htdocs\test.php(12) : eval()'d code on line 3

这似乎很简单 - 但是这个问题已经让我忙了好几个小时......

1 个答案:

答案 0 :(得分:2)

你必须使用单引号,如:

eval('

$some_array = array();

$some_array[0] = \'Hello World\';

echo $some_array[0];

');

否则PHP会尝试用不存在的已知值替换字符串中的$ some_array。