Intereting Posts
Как создать процедуру, которая выполняет аналогичную работу с моей php-функцией (ускорение оптимизации) Как преобразовать десятичную (16,4) в DATE или DATETIME в SQL или PHP imagecopy не работает все время Там, где работает статья, не работает на tinyint If-statement: как вытащить вторую переменную GET TCPDF ERROR: невозможно найти объект (8, 0) в ожидаемом месте От одного до многих отношений и добавление / изменение формы в SonataAdmin и Symfony2 Аутентификация пользователя с помощью CodeIgniter Сортировка массива со специальными символами в PHP Получение одной строки в огромном файле с PHP Как показать переменную PHP в гиперссылке? textarea не может иметь значение по умолчанию Нежелательная новая строка, возвращенная после запроса AJAX получить список активировать плагин в wordpress и удалить ссылку плагина из меню администратора извлечение идентификатора из таблицы mysql

Форма PHP $ _POST истекает, если страница перезагружена

У меня есть форма (для 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 , который вы всегда используете для подтверждения – например, каким-то образом передаете фактическое подтверждающее сообщение.