PHP не удается загрузить все параметры POST

#php #http #phpbb

#php #http #phpbb

Вопрос:

У меня проблема с моим старым форумом phpbb. Он работал очень хорошо, пока я не сменил сервер со старого php4 на новый php5. Я не могу получить весь массив post. Это довольно странно.

Я использовал firebug, чтобы увидеть, что отправляет браузер, и отобразил это с помощью print_r.

Вот что я отправляю:

 addcategory[0]  Create new category
mode    new
name[0] test
name[1000]  
name[1001]  
name[1002]  
and so on
  

Вот что я получаю в php, используя print_r($_POST):

 Array ( [name] => Array ( [1000] => [1001] => [10002] ...) 
  

Короче говоря, name[0] и mode вообще не передаются.

Комментарии:

1. Есть ли у вас еще один name[0] вариант дальше по строке, который мог бы перезаписать первый?

2. Нет. Я это проверил. Возможно, запрос POST слишком длинный? Отправлено несколько тысяч элементов. А ты как думаешь? Это могло бы усечь его.

3. несколько тысяч не должны быть проблемой, и материал не должен быть усечен таким образом. Странно.

4. Это очень странно. У меня никогда раньше не было такой ситуации.

Ответ №1:

Я отобразил необработанные данные POST, используя:

 print_r(urldecode(file_get_contents('php://input')));
  

Все параметры переданы правильно. Похоже, php не удается проанализировать эти параметры, чтобы правильно поместить их в массив $_POST.

Затем я сам их проанализирую и перезапишу массив $_POST своими «пользовательскими» данными POST.

Спасибо за вашу помощь.

Ответ №2:

Попробуйте получить дамп уровня http и посмотрите, что именно передается через тело вашего post-запроса. Для этого вы можете использовать livehttpheaders.