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 для разбора строки на переменные.

Другие вопросы по тегам