#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.