Проверка и перенаправление мультиформ PHP - PullRequest
4 голосов
/ 11 сентября 2008

У меня есть 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, сохранялись бы те же идеи?

Ответы [ 2 ]

4 голосов
/ 11 сентября 2008

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

1 голос
/ 27 июня 2012

Да - я согласен с выше. Я ВСЕГДА делаю 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">
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...