Запретить отправку формы дважды - PullRequest
9 голосов
/ 01 сентября 2010

У меня есть простая форма PHP, как это:

<?php

if(isset($_POST['myform']))
   // email...
else
   // display form

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

Ответы [ 4 ]

16 голосов
/ 01 сентября 2010

Вы должны выполнить перенаправление на страницу с сообщением о том, что данные были вставлены ... и кнопкой возврата, чтобы снова перейти на форму (если вы хотите) ...

Для перенаправления с помощьюPHP используйте функцию header:

header('Location: http://www.example.com/');
3 голосов
/ 01 сентября 2010

Выполните перенаправление после вставки данных на страницу подтверждения (это можно сделать с помощью header () , которая должна очистить данные POST и позволить обновление без дублирования содержимого.

2 голосов
/ 01 сентября 2010

В случае, если у пользователя есть задержка, и он несколько раз нажимает кнопку отправки, затем, возможно, использует механизм на стороне клиента, используйте js, чтобы отключить кнопку отправки после ее нажатия. но должен будет отобразить сообщение примерно что-то вроде «отправка сообщения ... если нет ответа, пожалуйста, перезагрузите страницу и повторите попытку».

1 голос
/ 08 февраля 2017
session_start();    
if (!$_SESSION['REQUEST_TYPE_USER_ID'] == $_POST)
{
//your code
//after the success process
    $_SESSION['REQUEST_TYPE_USER_ID'] = $_POST;
}
else
{
// request duplicated
}
...