2013-07-30 97 views
0

我正在使用gzcompress和gzuncompress通過url發送base64_encoded數據(數組)。以下是示例代碼,在某些服務器上,我收到數據錯誤,並且一些內容運行順利。我在這裏做錯了什麼?我是否錯過偶爾會導致數據損壞的事情?gzuncompress返回數據錯誤

$str='eNqFVduSoyAQ_RfnBxTxxj6mKq_7CZaJRK0xklEy2Zmp_fcFFRFo3PgSOKf7dJ8WrEhWkJ-JRDEJHmN3r8av8sp6Nga_JpKR4O2KoyjP5CrKNYXTP9zk3eafXFwJWs8aVnL2kEtEApTO8QkJWlrVdCwvjQ4OSeCiQqWhO1TkHKrP8sYGLpcpCX5Pr6qvVaQCyxftmnbmiIZwGMp_xYL7y5Xo1H3TtdxoKTdbgedlaXfPQDMDaQZcXJmo4cLqL6NfU11S7lU3_Ieisti-oNDCypE-aMX3xuKVMjeh6lRguoJe86S7OtyZmpHcdUgF993w7gZnqng2yrnbOEIrTnt6pwOfDJOE8tv5fDYSTW1Vs5fJOZ1ORqct-wS0RIY28kwRbxjoUD7DxvBwJh-dd2cMytU2coaBt12vEDoSQoYQUtsxKBQfC8VHQrEx6q0jDArhYyF8JITdcym3E1AoORZKjoQSQwir7RQUSo-F0iOhFDglXCJcJ-94T91LXDDLx-HYt4B8txcQPqTyFD45ZwN48WYbCkcXOho-p1G0MWy3cgOBL5jU1Ff27OV7dn3_eDJOoQZQZDDgJvLl69INjb9LRfCXKrLc2Hi_dbSvwVKQQfBcXGvhnjSLQdeqSbH6teLBYguHZlubSIbwzPtB1qjzyhUa9bwV2caAHU9N3D0WOgH8-bASXDDv3gp7PUKxTuE_P8tUbZZtZmaR7KlhXDAHivr7DzuC_e4%2C'; 
print_r(unserialize(gzuncompress(stripslashes(base64_decode(strtr($str, '-_,', '+/=')))))); 
+0

我們不知道你爲什麼使用'strtr'或'stripslashes'。但是如果你一次只執行一次操作,你很可能會發現調試更容易... –

+0

我從php手冊本身獲得了這段代碼(查看評論)http://php.net/manual/ EN/function.base64-encode.php。我試圖在$ str周圍添加urlencode,但仍然沒有成功。我會採納你的建議並將其分成多行謝謝。 –

+0

僅僅因爲有人將其留在手冊的評論中,並不適合。特別是,您是否在發送端執行了與註釋相同的* encoding *步驟? –

回答

0

我找到了解決方法。我直接去通過GET和urlencode來傳遞數組,而不是編碼一個序列化數組然後進行壓縮。它工作完美無瑕。