Сохранять данные $_POST после перенаправления

Каков наилучший способ сохранить данные $_POST перед перенаправлением?

Представьте себе такую ​​ситуацию: на странице А есть форма данных, затем мы нажимаем кнопку отправки, чтобы отправить запрос $_POST на ту же страницу А.

Если есть ошибки для отображения, будет интересно снова загрузить данные в форму данных, не позволяя пользователю писать весь текст дважды


person Dev Minia Zavut    schedule 07.12.2014    source источник
comment
Не уверен, что понимаю. Что ж, у вас должно быть что-то вроде этого для каждого поля данных: if(isset($_POST['some_field_id'])) echo $_POST['some_field_id']; иначе эхо '';   -  person Hrvoje Golcic    schedule 07.12.2014
comment
Какая часть вашего вопроса касается перенаправления?   -  person Max Leske    schedule 07.12.2014
comment
Если у меня есть поле данных с недопустимым значением, мне нужно перезагрузить это поле данных. Но это поле данных присутствовало в последнем разделе. Пример: Страница A (имеет поле данных) --- редирект 302 ---> Страница B (необходимо перезагрузить поле данных)   -  person Dev Minia Zavut    schedule 07.12.2014
comment
Извините за английский, я не очень хорошо пишу по-английски   -  person Dev Minia Zavut    schedule 07.12.2014
comment
Вы можете сохранить массив $_POST в session, а затем прочитать его на другой странице. Но я не уверен, что это безопасно.   -  person pradeepcep    schedule 07.12.2014
comment
Существует http 307, который перенаправляет с использованием того же метода (например, перенаправление сообщения вызывает другое сообщение). однако не все это поддерживает.   -  person Marc B    schedule 21.01.2016


Ответы (1)


Возможно, немного поздно, но в любом случае есть метод. (для тех, у кого такой же вопрос)

Допустим, у вас есть страница "form.php". Если вы отправляете форму на саму страницу:

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
  // action of the form will be "/path/on_your/webserver/to/form.php"
  // so it will POST to itself
  <input name="field_1" type="text" placeholder="Enter Text">
  <input name="submit" type="submit" value="Submit">
</form>

Теперь, если вы нажмете «Отправить», он обработает любой php-код, который у вас есть в вашем файле. Если вы хотите, чтобы текст в <input name="field_1">, который вы ввели, был там после запроса POST, вы даете полю <input> атрибут значения и позволяете PHP повторить опубликованное значение следующим образом:

<input name="field_1" type="text" placeholder="Enter Text" 
value="<?php if isset($_POST) {echo $_POST['field_1'];}?>">

Теперь после того, как вы поместите текст в поле ввода и нажмете «Отправить», текст будет в поле.

Возможно, у вас уже есть это решение или другое. Обратите внимание, что если вы используете это решение, $_SERVER['PHP_SELF'], если оно уязвимо для взлома URL-адресов. Будьте осторожны и очищайте свои переменные там, где это необходимо.

person G4Hu    schedule 21.01.2016