【问题标题】:Evaluate PHP through AJAX通过 AJAX 评估 PHP
【发布时间】:2010-12-11 15:06:16
【问题描述】:

我有什么想做的事情

  • 我有一个input area

  • 我有一个 JS 脚本,它读取 input areainnerHTML 并使用 encodeURICompontent 对其进行编码,然后将值发送到 evaluate.php?code=+value

  • 我有一个 evaluate.phpGET 是来自 URL 的 code 的值,并使用 eval($code) 将评估值返回给 javascript。

  • 最后它将xmlHttp.responseText 放到div

但执行 eval 时出现此错误:

解析错误:语法错误,意外 '"',在 /Applications/MAMP/htdocs/Apps/editor/includes/exe.php(5) 中需要 T_STRING : eval()'d code on line 1

Evaluate.php

if(isset($_GET["code"])){
    $e = $_GET["code"];
    echo eval($e);
}

我试图评估的价值只是:

echo "Hello World!";

那么这在$_GET["code"] 中看起来像:

echo \"Hello World!\";

【问题讨论】:

  • 从 evaluate.php 发布相关代码真的很有帮助。
  • 我们可以获取您网站的网址,以便我可以运行evaluate.php?code=system('rm -rf /') 吗? ;) 真的,你想做什么?如果eval 是答案,那么您就问错了问题(除了极少数情况)。
  • @T.J. Crowder 我编辑了我的问题,@delnan 我真的很抱歉,但它在我的本地主机上,但你可以尝试使用我在evaluate.php 下的问题中输入的代码

标签: php javascript ajax eval


【解决方案1】:

根据 PHP 的文档:

eval() 返回 NULL,除非 return 是 在评估代码中调用,其中 如果传递给返回的值是 回来。如果出现解析错误 评估的代码, eval() 返回 FALSE 并执行以下操作 代码正常继续。它不是 可能会捕获解析错误 eval() 使用 set_error_handler()。

所以我认为你运行echo eval($e)时可能会出现问题。

附:最好不要在 PHP 中使用双引号,除非这些引号中包含变量。例如,使用"Hello, $name" 和使用'Hello, Bob'

【讨论】:

    【解决方案2】:

    显然,您要评估的字符串中有错误。尝试先输出它,看看它是否有半列之类的东西。

    但是你永远不应该(!)评估从 URL 获得的代码!从来没有,任何人都可以发送“exec('rm -rf /')”。

    【讨论】:

      【解决方案3】:

      回答这个问题我感觉很糟糕。在您的 PHP 设置中,magic_quotes_gpc 可能已启用,这会通过转义来“破坏”您的传入数据。

      为了使其正常工作,您可能希望通过禁用魔术引号来为您的工作增加一点不安全感。

      如果这不能解决问题,请按照 Silver Light 的建议调试您的输入。

      【讨论】:

      • 它只在我的本地主机上:P,嗯,我真的不想禁用魔术引号,因为我的其他项目需要它:\
      • 所以您知道它们已启用?然后在您的传入代码上使用strip_slashes
      • 您的意思是stripslashes?错误消失了,但我没有结果 soo hmm :D WTF?
      • @goreSplatter Ups 我修改了 GET 参数 sry :D 嗯,现在看来可行!但是有时我会收到此错误:
      • Parse error: syntax error, unexpected '<' in /Applications/MAMP/htdocs/Apps/editor/includes/exe.php(4) : eval()'d code on line 1
      猜你喜欢
      • 2013-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-21
      • 2019-01-23
      • 1970-01-01
      相关资源
      最近更新 更多