Это не имеет значения.

я есть очень большая HTML-форма (содержащая таблицу со строками, которые содержат несколько входов), которые мне нужно отправить в PHP-скрипт через запрос POST. Проблема в том, что некоторые значения не отображаются и отсутствуют в суперглобальном PHP $ _POST.

Я проверил (используя расширение Firebug), что значения фактически отправляются на сервер браузером.

$ _POST заполняется, но некоторые значения просто отсутствуют.

Я проверил, что такое необработанный запрос, используя:

$raw_post = file_get_contents('php://input');

и возвращенная строка имеет значения. Они просто не разбираются в массив $ _POST. Странная вещь, которую я заметил, это то, что входные значения php: // обрезаются после некоторой длины, а оставшаяся часть строки не достигает $ _POST.

Я подумал о post_max_size и memory_limit и установил для них большие значения:

memory_limit = 256M
post_max_size = 150M
но согласно документации php $ _POST не должен содержать никаких значений, если сделанный запрос больше, чем post_max_size.

Из-за большого размера формы и запроса я не могу опубликовать его здесь, но я могу опубликовать скрипт php, который я использовал для устранения проблемы:


var_dump($file = file_get_contents('php://input'));
var_dump($_POST);
//... then i parsed the $file

Версия сервера: Apache / 2.2.9 (Debian)
Версия PHP: PHP 5.3.2-0.dotdeb.2

Может ли кто-нибудь объяснить причину такого странного поведения PHP и что я должен сделать (изменить настройки php, код?), Чтобы использовать массив $ _POST при обработке формы?

РЕДАКТИРОВАТЬ: Чтобы быть ясно: не только значения отсутствуют. $ _POST также не содержит этих ключей.

e.x. фрагмент исходного сообщения:

t_dodparam%5B198%5D=&t_dodparam2%5B198%5D=&t_kolejnosc%5B198%5D=199&n_indeks=201&n_wartosc=testtesttest

Ключ 't_dodparam' находится в посте, и он имеет ключ 198. Остальные параметры отсутствуют (например, t_dodparam2 находится в посте, но у него нет такого ключа, как 198, и нет такого ключа, как n_wartosc в $ _POST)

Ответы на вопрос(14)

Ваш ответ на вопрос