Многоформенная проверка и перенаправление PHP

StackOverflow https://stackoverflow.com/questions/55757

  •  09-06-2019
  •  | 
  •  

Вопрос

У меня есть buy.php с форма куда вы входите товары, количество, данные о доставке и т. д.

Когда вы нажмете кнопку Кнопка «Отправить», он отправляет обратно на buy.php ($_SERVER['PHP_SELF']) и выполняет некоторую проверку данных.

Если поля отсутствуют или есть ошибки, они подсвечиваются.Если все верно, сохраняю $_POST данные в $_SESSION переменные, затем выполните header('Location: check.php'), где я показываю данные, чтобы покупатель мог проверить информацию в последний раз перед покупкой.

Теперь, если я в check.php и нажмите кнопку «Назад», чтобы buy.php чтобы я мог что-то изменить, браузер спрашивает, хочу ли я повторно отправить данные POST.Я пытаюсь этого избежать.

У кого-нибудь есть какие-нибудь хорошие советы или передовые методы проверки PHP Multiform?

Кроме того, если бы у меня было n страниц для заполнения пользователем, buy.php, buy2.php, ... buyn.php до check.php сохранялись ли те же идеи?

Это было полезно?

Решение

Вы можете выполнить перенаправление на buy.php после сохранения в объект сеанса, который затем перенаправляет сервер на check.php. Это будет означать, что когда пользователь нажимает кнопку «Назад», он возвращается к запросу GET, а не к запросу POST.

Другие советы

Да - согласен с вышеизложенным.Я ВСЕГДА делаю redir далеко от последнего сообщения, поэтому нажатие кнопки «Назад» возвращает их обратно без этой ошибки ИЛИ повторную отправку.это также позволяет избежать осложнений.ты всегда можешь отметить redir связать страницу с ?m или &m (т.е.: page.php?m) и разместите это вверху страницы:(использовать elseif там после)

if (isset($_GET['m'])) {
  echo 'order placed.';
}
else {
  //...
}

Вы также можете иметь все это на одной странице.Просто назовите кнопки отправки submit1, submit2, нравиться:(имейте в виду, что если вы используете изображение для отправки, оно становится $_POST['submit1_x'] :)

if (isset($_POST[submit1]) {
  //validate + save session data from form1
  //display form 2
} else if(isset($_POST[submit2])) {
  //validate + save session data from form2
  //display form 3
} else {
  //display first form
  //<input type="submit" name="submit1" value="Continue">
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top