Intereting Posts
Установить объект PHP глобальным? Ошибка руководства Phalcon PhalconException: класс обработчика TestController не может быть загружен Почему я не могу получить полный путь к ресурсу CSS в шаблоне клинка? Разрыв страницы в Html2Pdf Как генерировать подобные случайные кривые? Перенаправление после входа в систему, URL-адреса WordPress любой хороший php-учебник о том, как отправлять sms на телефоны? Является ли использование PHP для сопоставления нескольких файлов JavaScript, которые будут быстрее, чем включение их отдельно? Symfony2 twig code не работает в шаблоне xml, поскольку он работает в html Преобразование одномерного массива в многомерный связанный массив Исключение .htaccess делает проблему в главной директории Лучшая практика PHP отслеживает зарегистрированных пользователей локальная ошибка HTTP-сервера localhost http 500 Отправка электронной почты через SMTP Gmail с помощью PHP WordPress: различный цикл для разных категорий на главной странице

новый предел в php: 1000 полей за POST. Кто-нибудь знает, может ли это число повлиять?

В новых PHP-версиях количество входных заявок на формулу (POST) будет ограничено 1000 (непроверенная информация). Это означает, что этот предел уже установлен в некоторых сборках по 5.2. Это вызывает множество проблем в нашем интернет-магазине.

Кто-то знает об этом больше, и если на этот предел могут влиять параметры или Vars. Я просто нашел max_input_vars, но, похоже, это полный новый var 5.4.RC4. И я не уверен, если этот var будет одним из методов POST.

 max_input_vars 

является попыткой PHP решить некоторые проблемы безопасности, и когда он установлен, он ограничивает количество входных данных (таким образом, поля в ваших формах). Также остерегайтесь

 max_input_nesting_level 

И да – они настраиваются. Просто отредактируйте свои значения php.ini или htaccess.

Я тоже столкнулся с этой проблемой, работая над локализованной установкой моего кода, а Debian Sid обновил до 5.4 RC4 PHP. Форма более 7000 строк с флажками (!) Вдруг обрабатывала только 1001 из них в данных $ _POST … голова царапается в течение нескольких часов.

Сделано изменение в /etc/php5/apache2/php.ini:

 max_input_vars = 5000 

сохранить и перезапустить apache, и теперь все хорошо.

Если вы не можете / не хотите увеличить лимит сервера, вот еще одно решение

 <!-- 10000 checkboxes outside the FORM. You do not want to post this --> <input class="cbox" type="checkbox" value="1" id="id-1" checked name="id[]"> .... <input class="cbox" type="checkbox" value="10000" id="id-10000" checked name="id[]"> <form method="POST" action="postpage.php"> <input type="hidden" id="cboxes" name="cboxes" class="cboxes" value="" /> <input type="submit" onclick="return clicked();"> </form> 

затем с помощью jquery

 <script> function clicked() { var cb = $('.cbox:checked').map(function() {return this.value;}).get().join(','); $('#cboxes').val(cb); return true; } </script> 

Используя POST, я протестировал публикацию 10000 записей.

На сервере

 $cboxes = $_POST['cboxes']; $cbox_exp =(explode(',', $cboxes)); print_r(count($cbox_exp)); //gives me 10000 

Просто хотел подвести итог и отметить несколько вещей:

1) Ограничения могут быть PHP, как указано выше.

2) Ограничениями может быть также упомянутый выше веб-сервер.

3) Ограничения Сухозина применяются только в том случае, если они установлены. Настройки изменены в php.ini

4) Остерегайтесь ограничений длины URL-адресов браузера, если вы попытаетесь представить столько данных в URL-адресе

Перезагрузите веб-сервер после изменения настроек сервера.

По-видимому, это похоже на исправление в среде Linux, вызывающее эту проблему. Если ваш сервер имеет этот патч «suhosin», вероятно, будет проблема. Также невозможно переопределить это во время выполнения, а включить в ваш php.ini

 suhosin.post.max_array_depth suhosin.post.max_array_index_length suhosin.post.max_name_length suhosin.post.max_totalname_length suhosin.post.max_vars suhosin.post.max_value_length 

Всегда полезно просто подкрепить некоторые из данных, которые вы отправляете, а не изменять этот предел в PHP. Например, если вы отправляете материал через Ajax или через поле формы, просто строгите поле, вызывающее проблему.

Предел находится в поле «число», а не «длина», если это имеет смысл.

Эти изменения, как правило, хорошо документированы. Вы уверены, что он был передан в 5.2? Где вы это читали? Кажется более вероятным, что вы нажимаете какой-то другой предел, такой как post_max_size или LimitRequestField Apache, или даже модем безопасности PHP, такой как Suhosin .

(Более того, PHP 5.2 больше не поддерживается, поэтому я сомневаюсь, что он получит такое обновление.)

Если вы не используете несколько или более 1000 полей ввода, вы можете объединять несколько входов с любым специальным символом, например,

 <input type='text' name='hs1' id='hs1'> <input type='text' name='hs2' id='hs2'> <input type='text' name='hs3' id='hs3'> <input type='text' name='hs4' id='hs4'> <input type='text' name='hs5' id='hs5'> <input type='hidden' name='hd' id='hd'> 

используя любой скрипт (JavaScript или JScript)

 document.getElementById("hd").value = document.getElementById("hs1").value+"@"+document.getElementById("hs2").value+"@"+document.getElementById("hs3").value+"@"+document.getElementById("hs4").value+"@"+document.getElementById("hs5").value 

с этой концепцией вы будете обходить проблему max_input_vars . Если вы увеличиваете max_input_vars в файле php.ini который вреден для сервера. Потому что они используют больше кэш-памяти сервера, и иногда они будут разбивать сервер.