PHP eval 没有产生预期的结果
PHP eval does not produce expected results
尽管建议不要使用 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
看似简单的事情,然而这个问题已经让我忙了好几个小时了……
您必须使用单引号,例如:
eval('
$some_array = array();
$some_array[0] = \'Hello World\';
echo $some_array[0];
');
否则 PHP 将尝试用不存在的已知值替换字符串中的 $some_array。
尽管建议不要使用 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
看似简单的事情,然而这个问题已经让我忙了好几个小时了……
您必须使用单引号,例如:
eval('
$some_array = array();
$some_array[0] = \'Hello World\';
echo $some_array[0];
');
否则 PHP 将尝试用不存在的已知值替换字符串中的 $some_array。