2016-11-16 2 views
0

В настоящее время у меня есть огромная форма, которая содержит более 1000 переменных, которые необходимо передать при отправке. В настоящее время PHP ограничивает его до 1000 переменных, и я должен отредактировать php.ini, чтобы обойти его.

Я знаю, что это довольно плохая практика, но есть ли способ ее обхода - возможно, путем разделения переменных $ _POST на куски в одной и той же иерархии ассоциативных массивов, чтобы я мог зацикливаться на кусках и использовать их?

+0

Значит, увеличивайте пределы? –

+3

Я бы посоветовал, что 1000 слишком много значений «POST», если вы цепляете несколько значений формы, тогда было бы предпочтительнее использовать сеансы вместо хранения данных, прежде чем у вас будет все это. –

+0

Форма, которую я должен быть отображен и заполнен на одной странице, и я намеренно избегаю редактирования файла php.ini. Я ищу другие возможные альтернативы для работы над этим неудобством. – theflarenet

ответ

0

php.ini файл Увеличивая предел max_input_vars

ИЛИ
Вы можете изменить его .htaccess

php_value max_input_vars 6000 
php_value suhosin.post.max_vars 6000 
php_value suhosin.request.max_vars 6000 
+0

Я стараюсь избегать этого. В любом случае, не касаясь php.ini? – theflarenet

+0

Тогда попробуйте 'ini_set' –

+0

Извините! Я неправильно прочитал ваш пост. Я попытался ini_set, и массив все еще был усечен. (Я даже использовал 10000). Похоже, это не подходит с ini_set. – theflarenet

3

Использование Javascript, чтобы объединить все входы в один JSON-кодированного параметра ,

Вот как вы могли бы сделать это с помощью JQuery:

$("#formid").submit() { 
    var params = JSON.stringify($(this).serializeArray()); 
    $(this).find(":input:not(#params)").prop("disabled", true); // prevent submitting the real inputs 
    $("<input>", { 
     type: 'hidden', 
     name: 'params' 
     value: params 
    }).appendTo(this); 
}); 

В PHP, вы бы тогда сделать:

$_POST = json_decode($_POST['params']); 

Обратите внимание, что кнопки не включены в параметры, кодируемых serializeArray(). Поэтому, если PHP делает что-то вроде

if (isset($_POST['submit'])) 

не работает. Вам нужно будет добавить это значение в params явно, например.

params.submit = "submit"; 
Смежные вопросы