PHP eval $a="$a"?
我正在查看一些工作代码,并遇到了这一行:
eval("\$element = \"$element\";");
我真的很困惑为什么任何 PHP 开发人员都会编写这一行。除了为自身设置一个变量之外,这还有什么目的?
幸运的是,该行所在的函数从未被调用。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
上面的示例将输出:
http://php.net/manual/en/function.eval .php
我只是ctl+c ctrl+v :-)
The above example will output:
http://php.net/manual/en/function.eval.php
I do just ctl+c ctrl+v :-)
它将变量的值转换为字符串,但我不建议使用它。
请改用函数
strval()
。查看手册。It converts the value of the variable to a string, but I wouldn't recommend using it.
Use the function
strval()
instead. Have a look at the manual.这会将变量
$element
的字符串转换内容分配给名为$element
的变量。另一种方法是使用strval
,或者在某些情况下使用print_r($x, true)
This assigns the string-converted contents of the variable
$element
to a variable called$element
. Another way to do this is to usestrval
, or in some casesprint_r($x, true)
除了将值转换为字符串之外,它实际上并没有做太多事情,或者可能作为
sprintf
的一个糟糕替代品。但如果变量包含双引号,这会引起一些麻烦。您确实不想评估这样的代码:更不用说一些更有害的代码了。似乎是“php 注入”的地方:D
不要使用它。
It doesn't really do much except converting the value to string or might serve as a poor alternative to
sprintf
. But if the variable contains double quotes, this is gonna cause some trouble. You really wouldn't want to eval a code like this:Not to mention some even more harmful code. Seems like a place for a "php injection" :D
Don't use it.