尽管建议不要使用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
这似乎很简单 - 但是这个问题已经让我忙了好几个小时......
答案 0 :(得分:2)
你必须使用单引号,如:
eval('
$some_array = array();
$some_array[0] = \'Hello World\';
echo $some_array[0];
');
否则PHP会尝试用不存在的已知值替换字符串中的$ some_array。