Не удается опубликовать скрытый ввод после обновления PHP 5.3.8 до PHP 5.3.24

Я обновляю свой PHP v5.3.8 до v5.3.24. С момента обновления мой скрипт больше не работает.

Входная переменная POST это проблема.

Исходный код формы здесь: http://pastebin.com/N4XKSQjR

Проблема строки следующая (последняя строка):

<input type="hidden" name="count_result" value="416">

На моей странице формы обработки PHP (traitement.php) я восстанавливаю это поле следующим образом:

 $count_result = $_POST['count_result'];

И я получаю эту ошибку php:

Примечание: неопределенный индекс count_result в строке...

Скрипт без проблем работает с PHP 5.3.8, но не с PHP 5.3.24.

Может кто-нибудь помочь мне?

Спасибо


person barbuslex    schedule 23.04.2013    source источник
comment
ссылка на pastbeans выглядит мертвой, не могли бы вы обновить?   -  person NullPoiиteя    schedule 23.04.2013
comment
мы проверяем isset($_POST ?   -  person chandresh_cool    schedule 23.04.2013
comment
Остальные скрытые поля работают нормально?   -  person Jon    schedule 23.04.2013
comment
У меня работает Pastebin... isset($_POST['count_number']) возвращает false. Я правильно получаю первые скрытые поля без проблем. Просто последний скрытый ввод - это проблема.   -  person barbuslex    schedule 23.04.2013
comment
На самом деле это не должно иметь значения, но пробовали ли вы переместить это поле hidden вверх вместе с другими?   -  person Jon    schedule 23.04.2013
comment
Да, если я перемещаю последний скрытый ввод 'count_result' в верхнюю часть формы с другими полями, он работает только с последним скрытым полем 'count_result', это переменная, учитываемая с помощью PHP, поэтому я не могу двигаться выше в коде. Видимо кажется, что мы не можем поставить скрытые поля ввода после того, как поля ввода сохранены в массиве NB_SAI_SOI[]...   -  person barbuslex    schedule 23.04.2013
comment
Создайте HTML в переменной и поместите, а затем добавьте его в начало для формы, которую вы создаете ближе к концу (т.е. создайте все, кроме <form...><hidden count_result и т. д., а затем создайте эту часть как переменную в конце и добавьте HTML (Или используйте механизм шаблонов, такой как Smarty ^^ )   -  person Jon    schedule 23.04.2013
comment
У меня есть несколько приложений, которые используют эту систему. Это означает, что я должен обновить все свои другие приложения после обновления PHP 5.3.24?   -  person barbuslex    schedule 23.04.2013
comment
Это немного странно - я никогда не сталкивался с этой проблемой раньше. Вы сделали var_dump($_POST); с ним в обеих позициях (может быть, чтобы точно увидеть, когда переменные обрезаются/и т.д. Вы также обновили apache/iss/и т.д.? (И, из любопытства, почему вы не сделали обновление на PHP 5.4 вместо этого?). Пожалуйста, используйте @jon, чтобы я получал уведомление, когда вы отвечаете, так как другие также оставляли комментарии здесь =]   -  person Jon    schedule 23.04.2013
comment
попросите любой js удалить или изменить тег count_result или сформировать сообщение или получить   -  person JOE LEE    schedule 23.04.2013
comment
@Jon var_dump($_POST) правильно возвращает все переменные, кроме 'count_result' (count_result не отображается). Я обновил PHP 5.3.24, потому что PHP 5.4 требует много изменений в исходном коде. Моя версия апача 2.2.21.   -  person barbuslex    schedule 23.04.2013
comment
Мне жаль. Это своеобразно. Одинаково ли это для всех протестированных браузеров? Где-то там задействован javascript? Кроме этого, я понятия не имею - не могу найти никаких отчетов об ошибках или чего-то подобного. У вас есть плагин для браузера, который позволяет вам просматривать то, что отправляется, или что-то в этом роде? Единственное, о чем я могу думать, это такая проблема, как: -array" title="сообщение php теряется после 70-й переменной в массиве"> stackoverflow.com/questions/14960444/, поскольку post_max_size — это то, что могло измениться при обновлении.   -  person Jon    schedule 23.04.2013
comment
@Jon Да, я знаю, что это особенно проблема, лол, я пробовал использовать PHP 5.4.14, и проблема не устранена. Я не думаю, что post_max_size является проблемой, потому что я получаю файл php.ini из моей старой версии PHP 5.3.8 в версию PHP 5.3.24. Нет JS, который я также пробовал только с HTML-кодом, который я вам предоставил, это pastebin, и возникает точно такая же проблема.   -  person barbuslex    schedule 23.04.2013
comment
Нашел проблему! (Включение предупреждений очень помогло бы вам ;))   -  person Jon    schedule 23.04.2013
comment
@Jon Да, это работает с max_input_vars = 10000, но входных переменных меньше 1000, нет? Почему у меня нет такой же ошибки, как у вас? Warning: Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini. Мой отчет об ошибке: error_reporting = E_ALL | E_STRICT   -  person barbuslex    schedule 23.04.2013
comment
Может быть, попробовать удалить E_STRICT, не знаю, почему он OR объединен с E_ALL, но это может быть причиной того, что он не выбирает все?   -  person Jon    schedule 23.04.2013


Ответы (1)


Единственное решение, которое мне удалось найти, и основанное на ошибке, которую я получаю при попытке воспроизвести проблему. Обратите внимание, я тестировал это на PHP 5.4.x
Ошибка:

Предупреждение: неизвестно: входные переменные превысили 1000

В моей php.ini строке:

; max_input_vars = 1000

был закомментирован - это означает, что по умолчанию он равен 1000. До версии 5.3.9 этого варианта не было, следовательно, вы не сталкивались с проблемой, и она была неограниченной ^^. С PHP >=5.3.9 по умолчанию используется 1000, поэтому, чтобы сделать ваш скрипт совместимым с таким количеством входных данных, вам нужно установить эту директиву в PHP. Поставил на 2000 и все заработало.

Поскольку вы скопировали свой старый php.ini, его там, вероятно, не будет, поэтому добавьте:

max_input_vars = 2000

где-то там, и это будет работать, по крайней мере, для вашего текущего примера. ^^

person Jon    schedule 23.04.2013
comment
Да, это работает с max_input_vars = 2000, но входных переменных меньше 1000, нет? Почему у меня нет такой же ошибки, как у вас? Мой отчет об ошибке: error_reporting = E_ALL | E_STRICT - person barbuslex; 23.04.2013
comment
Это интересно. Не уверен, почему вы не получили эту ошибку тогда. O.o Каждый из ваших массивов, которые вы создаете в HTML, имеет 51 запись. Каждый из этих 51 также учитывается при достижении предела, поэтому, например, ACT_CODE считается как 51 вход в этом пределе. ^^ - person Jon; 23.04.2013