У меня есть $ _POST в формате массива, и когда $ _POST превышает 256B, потому что то, что отправляет, имеет ограничения, оно автоматически сжимается с помощью gzip. Я не могу предотвратить это, но я могу распаковать его (используя PHP) и сохранить его в виде массива. Я думаю. gzuncompress только для строк.
Я могу использовать это: (чтобы превратить его в строку, которая распакована)
$post_body = file_get_contents('php://input');
$post_body = (ord(substr($post_body,0,1)) == 31 ? gzinflate(substr($post_body,10,-8)) : $post_body);
Но это строка, и я не могу написать PHP на всю жизнь, мне помогли написать то, что я получил в настоящее время, но помощник здесь тупик.
Предполагая, что $ post_body:
userid=&name=&level=&exp=&key1=&key2=&key3=&key4=&key5=&key6=&key7=&key8=&key9=&key10=&key11=&key12=
Как бы я превратил это обратно в массив? Мол, как я мог раньше сделать:
$userid = $_POST["userid"];
$name = $_POST["name"];
и так далее. Я вроде не знаю, как увидеть $ _POST как массив, хотя. Метод автоматически преобразует его из строки в массив. Но тогда мне нужно обработать это в PHP как массив. Я не вижу массив, хотя. Я могу повторить это, но это проявляется как
Array
Это все.
Помощь очень ценится, я храню данные об этом, и мне пришлось снять «игру», чтобы справиться с этой проблемой. До сих пор $ _POST был ниже 256B, поэтому у меня не было проблемы. : /
Редактировать: спасибо @Marcin Orlowski за сообщение, что b = бит, а B = байт
Тебе нужно parse_str () как это:
$post_body = file_get_contents('php://input');
$post_body = (ord(substr($post_body,0,1)) == 31 ? gzinflate(substr($post_body,10,-8)) : $post_body);
parse_str($post_body);
// Now just call $userid or $name, etc...
Вы просто вызываете массив и нужный индекс:
echo yourArray['yourIndex'];