我试图弄清楚eval()函数如何以一种简单的方式工作。我尝试了以下代码,但它不起作用,而是显示一个解析错误。
<?php
$str = "exit()";
eval($str);
?>
我的代码出了什么问题?
答案 0 :(得分:4)
我需要一个分号
<?php
$str = "exit();";
eval($str);
?>
来自PHP文档:
请记住,必须传递的字符串 是有效的PHP代码,包括东西 比如使用a来终止语句 分号,所以解析器不会死 eval()之后的行
答案 1 :(得分:2)
只是一个提示 - eval'代码是动态评估的,可以逃避垃圾收集器。
答案 2 :(得分:2)
错误是:“Parse error: syntax error, unexpected $end in Command line code(1)
”?如果是这样,那是因为你没有在exit()
的末尾添加分号。
所以试试:
<?php
$str = "exit();";
eval($str);
?>
希望这有帮助。
答案 3 :(得分:1)
最后需要一个分号:
并且eval的问题在于它从IL语言调用解析器,因此,评估的代码将是VSL(非常慢的语言),因此,如果您的网站不会同时遭到许多用户的攻击,那么没问题,但是如果你投射的东西很大,那么我建议你不要使用eval,只是在非常必要的情况下。
希望它有所帮助。答案 4 :(得分:0)
$str = "exit();";
可能有用。
除非真的有必要,否则不应使用eval()。
此外,尝试使用exit()以外的函数,或将字符串作为参数传递给exit函数。否则,您将看不到它的输出。