3

我有一个在我的本地主机服务器上完美运行的 php 脚本。

当我将所有内容从 localhost 移动到 Web 服务器时,我json_decode无法正常工作。

我已经尝试过json_encode,仍然没有。

这种行为可能有什么问题?

我的代码:

$productsArr = json_encode($_GET['object']);

$_GET['object']是经过验证的 JSON。

我的最后一个选择可能是magic_quotes,但我不知道是否可以使用 cPanel 更改 PHP.ini 文件,这是我对服务器的唯一访问权限。

我会很感激任何想法。

编辑:

这是我的网址的一部分:

Request URL:http://something.com/download.php?object=[{%22code%22:%222F-58S%22},{%22code%22:%22HT-45H%22},{%22code%22:%2244-3%22},{%22code%22:%22898-OPv%22}]&checkbox=

如果这很重要,我正在使用这个标题:

header('Content-Description: File Transfer'); 
header("Content-type: application/ms-word");
header("Content-Disposition: attachment;Filename=$name_of_file.doc");
4

3 回答 3

7

我必须这样做才能json_decode工作。也许对此有更好的方案。

$j = $_POST["json"];
$j = str_replace("\\\\\"", "###dq###", $j);
$j = str_replace("\\", "", $j);
$j = str_replace("###dq###", "\\\"", $j);

或者,简而言之:

$j = stripslashes($j);
于 2013-07-29T15:38:31.033 回答
0

2 提示:
1-echo $_GET['object'] ,如果在文本中看到 \,请使用 stripcslashes(),然后使用 json_decode()。
2-如果看到 stdclass 错误,请使用以下代码:

$productsArr = json_decode($_GET['object'],true);
于 2013-07-29T15:40:14.560 回答
-1

如果魔术引号是您的问题,您可以将此代码放在脚本入口点的顶部

function undoMagicQuotes($array, $topLevel=true) {
        $newArray = array();
        foreach($array as $key => $value) {
            if (!$topLevel) {
                $key = stripslashes($key);
            }
            if (is_array($value)) {
                $newArray[$key] = undoMagicQuotes($value, false);
            }
            else {
                $newArray[$key] = stripslashes($value);
            }
        }
        return $newArray;
    }
    $_GET = undoMagicQuotes($_GET);
    $_POST = undoMagicQuotes($_POST);
    $_COOKIE = undoMagicQuotes($_COOKIE);
    $_REQUEST = undoMagicQuotes($_REQUEST);
于 2014-09-08T07:40:55.207 回答