PHP: Предотвратите обратную / двойную отправку с помощью страницы подтверждения формы.Мой рабочий процесс правильный? - PullRequest
0 голосов
/ 14 марта 2012

Я не могу заставить это работать.Я пытаюсь запретить пользователю вернуться на страницу подтверждения формы, на которой отображаются его данные до окончательной отправки.

Это текущий рабочий процесс:

post.php //User enters info; name, date, etc
->clicks submit
verify.php //This page displays the information the user entered before final submission.
           //No database work done
->clicks final submit
verify_f.php //Inserts data into database, REDIRECTS to verify_redirect.php
verify_redirect.php //Redirects to next page, confirm.php
confirm.php //Final screen. Lets user know that his data was successfully entered

Однажды проблема возникла при confirm.php пользователь может нажать на кнопку «Назад» и находится на verify_f.php, странице подтверждения, где отображаются все введенные им данные, и все, что ему нужно сделать, это снова нажать кнопку окончательной отправки для двойной записи.

Как это можно исправить?

Ответы [ 3 ]

2 голосов
/ 14 марта 2012

В verify.php сгенерируйте одноразовый номер (случайный хеш обычно хорошо подходит для этой простой цели) и добавьте его в качестве скрытого поля формы, отправленного в verify_f.php. Затем в verify_f.php проверьте, что одноразовый номер ранее не использовался.

2 голосов
/ 14 марта 2012

Вы можете сгенерировать случайный хэш между этими формами и изменить хэш после отправки формы. Каждый раз, когда пользователь отправляет форму, вы проверяете хеш, полученный из формы, и все, что хранится на вашем сервере, через $ _SESSION.

0 голосов
/ 14 марта 2012

все обработки выполняются в одном и том же сценарии.
Вы можете использовать поле формы и условный оператор для управления потоком программы, например:

if (isset($_POST['confitm'])) {
  include 'confirm.php';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...