我有什么和想做什么
我有input area
。
我有一个JS脚本,它读取input area
的{{1}}并使用innerHTML
对其进行编码,然后将值发送到encodeURICompontent
;
我有一个evaluate.php?code=+value
evaluate.php
来自网址的GET
的值,并使用code
向javascript返回一个评估值。< / p>
最后,它将eval($code)
置于xmlHttp.responseText
。
但执行eval时出现此错误:
解析错误:语法错误,意外''',期待/Applications/MAMP/htdocs/Apps/editor/includes/exe.php(5)中的T_STRING:第1行的eval()代码
Evaluate.php
div
我尝试评估的价值只是:
if(isset($_GET["code"])){
$e = $_GET["code"];
echo eval($e);
}
然后这在echo "Hello World!";
中看起来像:
$_GET["code"]
答案 0 :(得分:1)
显然,您要评估的字符串中存在错误。尝试先输出它,看它是否有半列和类似的东西。
但是你永远不应该(!)评估你从URL获得的代码!永远不要,任何人都可以发送“exec('rm -rf /')".
答案 1 :(得分:1)
我很难回答这个问题。在您的PHP设置中,可能会启用magic_quotes_gpc
,通过转发来“破坏”您的传入数据。
为了让它发挥作用,您可能希望通过禁用魔术引号为您的事业添加更多的不安全感。
如果这不能解决问题,请按照Silver Light的建议调试输入。
答案 2 :(得分:1)
根据PHP的文档:
eval()返回NULL,除非返回 在评估的代码中调用,其中 case传递给return的值是 回。如果有解析错误 评估的代码,eval()返回 FALSE并执行以下操作 代码继续正常。它不是 可能会捕获一个解析错误 eval()使用set_error_handler()。
所以我认为运行echo eval($e)
时可能会出现问题。
P.S。除非在这些引号中包含变量,否则最好不要在PHP中使用双引号。例如,使用"Hello, $name"
并使用'Hello, Bob'
。