альтернатива $ _POST

У меня огромная форма со входами типа (текст, флажки, скрытые и т. Д.). Содержимое входных данных формы берется из базы данных. Пользователь должен внести некоторые изменения и сохранить данные обратно в db.

В данный момент я использую функцию, которая имеет цикл foreach($_POST as $key=>$value) . Как вы знаете, есть проблемы с почтовым методом:

  1. не может обновить,
  2. не может вернуться назад.

Я хотел бы использовать метод $_GET , но длина моих переменных и значений больше 2000 символов.

У вас есть какие-то советы для меня, что я могу сделать? Может быть, есть некоторые трюки в использовании $_GET . Может, я не понял, как правильно это использовать?

В самом POST нет ничего плохого. Вы просто должны использовать его правильно
В стандарте HTTP говорится, что вы должны сделать перенаправление GET после получения запроса POST.
Итак, как легкий код, как этот

  header("Location: ".$_SERVER['PHP_SELF']); exit; 

после обработки ваша форма решит все ваши «проблемы»,

в случае, если вы хотите обрабатывать сообщения об ошибках, вы можете использовать шаблон POST / Redirect / GET. Однако он не перенаправляет на ошибку, проблемы, о которых вы упомянули, становятся незначительными.

вот краткий пример:

 <? if ($_SERVER['REQUEST_METHOD']=='POST') { //processing the form $err = array(); //performing all validations and raising corresponding errors if (empty($_POST['name']) $err[] = "Username field is required"; if (empty($_POST['text']) $err[] = "Comments field is required"; if (!$err) { //if no errors - saving data and redirect header("Location: ".$_SERVER['PHP_SELF']); exit; } else { // all field values should be escaped according to HTML standard foreach ($_POST as $key => $val) { $form[$key] = htmlspecialchars($val); } } else { $form['name'] = $form['comments'] = ''; } include 'form.tpl.php'; ?> 

по ошибке он отобразит форму обратно. но после успешной отправки формы он также перенаправится.

Используйте шаблон Post / Redirect / Get .

Что касается обработки цикла, контур foreach loop в PHP создает копию массива, над которым вы работаете. Если вы хотите обрабатывать $ _POST с помощью другой конструкции цикла (для / while) и использовать такие функции, как count (), current (), reset (), next (), prev (), end (), each () или key (), есть у него.

Программирование PHP: глава 5, стр. 128-129