PHP пост ограничен 1000 переменных
У меня есть большая форма, и я вижу из firebug, что все значения элементов отправляются должным образом, но когда я печатаю __ ($_POST), отображаются только 1000 переменных. Мой max_post_size установлен на 25M, так что я знаю, что это не проблема, и я искал в своем php.ini ключевые слова, такие как "post" и "max", и ничего не нашел.
1000 - это только около 1/4 элементов, которые я передаю, так что, очевидно, это довольно большая проблема для меня, я действительно ценю любую помощь, которую могу получить.
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
}
Функция serialize выдаст закодированные в URL строки всех данных формы, а в файле PHP просто используйте функцию parse_str для разбора строки на переменные.