У меня есть большая форма, и я вижу из firebug, что все значения элементов отправляются правильно, но когда у меня print_r ($ _ POST), отображается только 1000 переменных. Мой max_post_size установлен в 25M, поэтому я знаю, что это не проблема, и я искал через свой php.ini ключевые слова, такие как «post» и «max», и я ничего не нашел.
1000 – это только около 1/4 элементов, которые я прохожу, поэтому, очевидно, это довольно большая проблема для меня, я очень ценю любую помощь, которую я могу получить.
Я вижу, что вы здесь делали.
max_input_vars, 1000
Введено для предотвращения атаки на столкновение хэшей: http://www.phpclasses.org/blog/post/171-PHP-Vulnerability-May-Halt-Millions-of-Servers.html Но не удалось в 5.3.9: http: / /www.phpclasses.org/blog/post/175-Another-Serious-Security-Bug-on-PHP-539.html Поэтому вы должны обновить до 5.3.10+, если это проблема.
У меня была такая же проблема ограничения переменной 1000 с помощью PHP v5.4.20. Несмотря на то, что в файле php.ini не было такой строки «max_input_vars», я просто нашел удобное место, чтобы сложить его в верхнем разделе [PHP], добавив строку «max_input_vars = 10000», перезапустил Apache и все было решено ,
У меня была аналогичная ситуация; Я мог только POST первых 1000 элементов массива.
Мое решение состояло в том, чтобы implode()
массив в одну длинную строку и explode()
на стороне сервера.
Вероятно, работает json_encode()
.
ОК. Я вычислил решение, используя jquery
Я сделал это так
$("#single-form").submit(function(event) { event.preventDefault(); var table_data = $(this).serialize(); console.log(table_data); // ajax call to handle the data }
функция сериализации даст строки с кодировкой URL всех данных формы, а в файле PHP просто используйте функцию parse_str для синтаксического анализа строки в переменных.