Я использую gzcompress и gzuncompress для отправки данных base64_encoded (массива) по URL-адресу. Ниже приведен пример кода, на некоторых серверах я получаю ошибку данных, а на некоторых все работает без сбоев. Что я здесь делаю не так? Я упускаю что-то, что иногда вызывает повреждение данных?

$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
Mr.Vibe 30 Июл 2013 в 21:34
Мы понятия не имеем, почему вы используете strtr или stripslashes. Но вам, вероятно, будет намного проще отлаживать, если вы будете выполнять одну операцию за раз ...
 – 
Jon Skeet
30 Июл 2013 в 21:36
Я получил этот код из самого руководства по php (смотрите комментарии) php.net /manual/en/function.base64-encode.php. Я попытался добавить urlencode вокруг $ str, но все равно безуспешно. Я приму ваше предложение и разбью его на несколько строк, спасибо.
 – 
Mr.Vibe
31 Июл 2013 в 09:59
Тот факт, что кто-то оставил это в комментарии к руководству, не делает его уместным. В частности, выполняли ли вы тот же шаг кодирования , который также указан в комментариях, на отправляющей стороне?
 – 
Jon Skeet
31 Июл 2013 в 10:11
Да, шаг кодирования в порядке, как в комментариях. Обратите внимание на вопрос еще раз, он работает на некоторых серверах правильно, а на некоторых нет, я тестировал его много раз xyz.com/abc.php?str='ASCsse34S ... 'и один localhost: 8888 / abc.php ? str = 'ASCsse34S ...' он отлично работал на localhost и нескольких моих серверах, но в трех других случаях не работал.
 – 
Mr.Vibe
4 Авг 2013 в 21:53

1 ответ

Лучший ответ

Я нашел обходной путь для этого. Вместо того, чтобы кодировать сериализованный массив и затем сжимать его, я сразу же передал массив через GET и urlencode. Работало безупречно.

0
Mr.Vibe 4 Авг 2013 в 21:56