$ _POST не содержит всех входных данных

66
5

Я пытаюсь опубликовать большую форму через php, используя метод POST. Мой скрипт формы успешно работает до сих пор, когда массив $_POST получил довольно большое значение.

Когда я печатаю file_get_contents ('php://input'); , показаны все входы, которые включены в форму. Но когда я печатаю $_POST, он получает первую часть формы. Я попытался удалить строки, а затем метод $_POST снова работает отлично. Как только он станет слишком большим, он не будет публиковать все данные, включенные в форму.

У кого-нибудь есть идеи? Я попытался изменить php.ini и установить post_max_size на более высокое значение, но это тоже не помогло.

спросил(а) 2015-07-10T16:31:00+03:00 4 года, 11 месяцев назад
1
Решение
66

По умолчанию в более низких версиях PHP (<5.3.9) число переменных $_POST ограничено 1000. Невозможно изменить это.

В более высоких версиях вы можете установить max_input_vars на любой номер, который вы хотите.

Если вы находитесь ниже 5.3.9, вы можете сделать некоторые работы. Например json_encode переменные и отправить их как одну переменную. Предел $_POST по умолчанию установлен в 8mb, но может быть изменен в файле php.ini post_max_size="whatever_size_you_wish_here".

Как увеличить число переменных в $_POST:

2 варианта:

    в вашем файле .htaccess выполните php_value max_input_vars 2000(or whatever)

    в файле, который вы работаете с ini_set('max_input_vars', 2000);

ответил(а) 2015-07-10T16:36:00+03:00 4 года, 11 месяцев назад
55

Просто решил, видимо, мой сервер не обновил max_input_vars по какой-то странной причине. Теперь, когда я увеличил эту ценность, она работает.

ответил(а) 2015-07-10T16:51:00+03:00 4 года, 11 месяцев назад
55

Попробуйте сбросить phpinfo() и найдите max_input_vars. Если он там, вы можете установить его в php.ini на большее число, как вы считаете нужным. Если вы этого не видите, вероятно, вы не получили этот точный патч, и ваш номер был жестко закодирован.

ответил(а) 2015-07-10T16:36:00+03:00 4 года, 11 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема