2012-01-31 12 views
1

URLを介して別の部分に送信してデコードできる文字列に圧縮する配列ダンプがあります。PHP圧縮文字列

現在、私はそれをgzcompressingしており、それをエンコードしています。しかし、それは動作していないようです。受信側で使用すると、bool(false)が返されます。

gzcompress(json_encode($images),9))

符号化データの例

string(214) "{"1":null,"2":null,"3":null,"4":"..\/uploads\/2462df38db374653720daa42b7aefec4\/cv4slm3fr8_c.png","5":"..\/uploads\/2462df38db374653720daa42b7aefec4\/vzh72hwqvk_c.png","6":null,"7":null,"8":null,"9":null,"10":null}" 

null値が同様のデータで充填されています。そして、私はこのデータをURLを介して別のスクリプトに渡す必要があります。

注:開かれたURLはモーダルボックスの内側にあるため、なぜ私はPOSTできないのですか。

+0

gzcompressの場合、後でbase64_encodeし、受信URLに追加する前にurlencodeを適用する必要があります。しかし、それは本当に 'http_build_query'には長すぎるのでしょうか? – mario

答えて

2

の代わりにJSONを介してそれをコード単にサーバにPOSTリクエストとしてそれを送信し、他方の側に

$decoded = base64_decode(unserialize($receivedData)); 
それを復号化文字列にその配列を変換し、POST

$encoded = base64_encode(serialize($arrayOfData)); 

を通してそれを送信してみてください

6

これを行わないでください。 URLは '大きな'文字列のためのものではありません。それらは、ブラウザごとに異なる長さ制限があります。ブラウザ/サーバーがあなたのURLを自動的に切り捨てると、データが破損する危険性があります。 URLはまた、任意のバイナリデータには適していません。つまり、GZ圧縮データで終わることになります。URLエンコードする必要があります。

代わりにPOSTリクエストを使用してください。これには、はるかに大きな制限があります。

+0

問題は、このウィンドウがiframe内のモーダルボックス+ _ +で開かれていることです。 – Steven

0

上記の答えにはほとんどのものが含まれています。しかし、Marcは良い点を挙げています。 大きな文字列を渡すと問題が発生する可能性があります.POSTは良い方法です。

ただし、投稿を使用できない場合があります。例えばブックマーク機能を提供する場合。

したがって、この種のデータを文字列で使用するには、base64_encode(gzcompress(json_encode($ arr))、9)を使用します。それは間違いなくクエリ文字列で渡されるパラメータのサイズを減らします。

希望すると助かります。

関連する問題