0

当我使用 将动作脚本 3 中的 json 数据发送到 phpURLVariables时,json 字符串会发生变化,并且不能用作 php 中的 json。如何防止这种情况发生?或者如何解决?

来自 Flash 的跟踪(发送方法POST,变量名myObject):

[{"data1":"value1","data2":"value2",...},{...},...]

echo $_POST['myObject']来自 PHP:

[{\"data1\":\"value1\",\"data2\":\"value2\",...},{...},...]

echo json_decode($_POST['myObject'])从 PHP 什么都不是,当var_dump(json_decode($_POST['myObject'])

NULL
4

1 回答 1

4

服务器自动转义POST数据(我记得它是 中的一个选项php.ini)。要取消转义,使用stripslashes函数,并在解码字符串后;)

 json_decode(stripslashes($_POST['myObject']));

基于@therefromhere 的评论,一个更好的magic_quotes_gpc出发解决方案。如果您对服务器具有 root 访问权限,或者您有权在运行时设置 php 标志,则可以执行此操作。这里有一些帮助: http: //php.net/manual/en/security.magicquotes.disabling.php

如果你想解决这个问题,基于@nl-x 的评论,不依赖于你的服务器配置:

$myObject = get_magic_quotes_gpc() ? //Examine: is magic quotes gpc on?
               stripslashes($_POST['myObject']) : //if true: unescape the string
               $_POST['myObject'];                //if false, do nothing
json_decode($myObject);
//When php 5.3 or earlier installed on server
于 2013-04-11T07:59:11.177 回答