PHP и (слишком) много полей ввода - PullRequest
2 голосов
/ 02 апреля 2012

У меня есть html-форма с примерно 1500 полями ввода * (текстовые или скрытые).Form.action - это POST, и каждое поле ввода имеет уникальное имя (без имени = foo []).

Всякий раз, когда я пытаюсь напечатать каждую переменную $ _REQUEST в PHP после отправки формы, только первые несколькоЗаписи печатаются.Фактически, переменная $ _REQUEST содержит только 1001 элемент (около 500 полей пропущены).

Любая идея, почему это происходит?

Поскольку данные отправляются по почте, не получают, URL-адресЛимит не проблема.Поэтому я подумал, что это имеет какое-то отношение к конфигурации веб-сервера и что запрос слишком велик.Но установка LimitRequestBody в 0 ничего не изменила в результате.

С точки зрения памяти, используемой этим PHP-массивом, я только прочитал, что размер ограничен только общей памятью,что должно быть более чем достаточно.(ключи около 20 символов в каждой, а значение около 6 символов в каждой)

Я что-то пропустил?

* На случай, если вам интересно: навигация состоит из около 750 записей, 2 поля в каждой записи(одна позиция для заказа и одна для родителя, если вложенная)

Ответы [ 4 ]

6 голосов
/ 02 апреля 2012

Начиная с PHP 5.3.9, появился новый параметр конфигурации под названием " max_input_vars ", который ограничивает количество входных переменных.По умолчанию установлено значение 1000. Также проверьте, установлен ли Suhosin , поскольку есть также аналогичная настройка .

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

2 голосов
/ 02 апреля 2012

Попробуйте переопределить php_flag max_input_vars.

Добавьте в ваш файл .htaccess или измените php.ini

php_flag max_input_vars 1500

Также есть флаг для вложения

php_flag max_input_nesting_level 64
1 голос
/ 02 апреля 2012

Возможно, вы превышаете размер POST? Вы можете использовать MIME Multipart, как люди, которые публикуют файлы.

0 голосов
/ 02 апреля 2012

Проверьте вашу конфигурацию php.ini для значения post_max_size - возможно, вы превысили его?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...