3

localhost サーバーで完全に動作する php スクリプトがあります。

すべてをローカルホストから Web サーバーに移動したときに、機能しjson_decodeません。

私は試してみましたがjson_encode、まだ何もありません。

そのような行動の問題は何ですか?

私のコード:

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

$_GET['object']検証済みの JSON です。

私の最後のオプションは可能ですmagic_quotesが、サーバーへの唯一のアクセスであるcPanelを使用してPHP.iniファイルを変更できるかどうかわかりません。

アイデアをいただければ幸いです。

編集:

これは私のURLの一部です:

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

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 に答える