Многоформенная проверка и перенаправление PHP
-
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">
}