У меня есть форма (для A), которая перенаправляется на другую форму (форма B).
Когда пользователь перенаправляется в форму B, устанавливается значение $ _POST, запускается функция электронной почты. Это проблема b / c, если пользователь перезагружает страницу, это письмо снова отправляется.
Я хотел бы прекратить отправку электронной почты, если страница загружена.
Следовательно, я включил поле в форме A, type = hidden с value = send, и когда отправлено электронное письмо (форма B), я отключил это поле, но если я загружаю страницу, письмо отправляется в любом случае.
if(isset($_POST['emailtrigger'])){ emailfunction(); unset($_POST['emailtrigger']); }
Как я могу ответить на страницу, которая после отправки электронной почты, если страница (форма B) перезагружена, чтобы пропустить функцию электронной почты?
спасибо
Если вы хотите избежать перенаправления или хотите защитить себя от пользователей, которые нажимают «Назад» и повторно представляют форму после перенаправления, простым решением было бы добавить скрытое поле со случайным значением, сгенерированным при загрузке формы. После отправки формы просто напишите это значение поля в данные сеанса. Затем, если пользователь отправляет те же данные формы, вы сравниваете случайное поле и то, что написано в данных сеанса. Если это значение – вы не обрабатываете данные формы.
Это, очевидно, делается путем перенаправления на ту же страницу после обработки вашей формы. Поэтому, если ваша форма обрабатывается скриптом form.php
, то после отправки электронной почты вы должны сделать перенаправление:
header('location: form.php');
Это невидимо для пользователей, и после перезагрузки значения $_POST
снова отправляются.
Как только A $_POST
свою работу, продолжите с формой B, будет доступно $_POST
.
Как только B будет выполнен, выполните
header('location: formConfirm.php'); exit;
Сценарий formConfirm.php
напечатает подтверждающее сообщение, ничего больше. В частности, он не должен обновлять БД или отправлять электронную почту.
Более общий, вы можете реализовать общий formConfirm.php
, который вы всегда используете для подтверждения – например, каким-то образом передаете фактическое подтверждающее сообщение.