Home > Article > Backend Development > Prevent multiple PHP form submissions_PHP Tutorial
When submitting an HTML form, it may take several seconds before the form is successfully submitted and the response page is displayed. People can get idle and click the submit button several times, which may result in duplicate form submissions. Usually not really a problem, but in some cases you may want to prevent this from happening.
Below you'll find two simple tips to prevent duplicate submissions, you can use these or a combination of both.
»Prevent multiple form submissions using Javascript
Repeating submissions using Javascript blocks is probably the easiest way. When someone submits the form we simply disable the Submit button and maybe change its value to something more descriptive, like "Submit, please wait..."
Try clicking this button, for example. It will remain disabled until you reload this page:
The first step is to give your submit button a unique id, for example id="myButton":
The second (and final) step is to tag the two Javascript commands with
/* Set e-mail recipient */
$myemail = "you@domain.com";
/* Check all form inputs using check_input function */
$yourname = check_input($_POST['yourname'], "Enter your name");
$subject = check_input($_POST['subject'], "Write a subject");
$email = check_input($_POST['email']);
$website = check_input($_POST['website']);
$likeit = check_input($_POST['likeit']);
$how_find = check_input($_POST['how']);
$comments = check_input($_POST['comments'], "Write your comments");
//www.software8.co Original text
/* If e-mail is not valid show error message */
if (!preg_match("/([w-]+@[w-]+.[w-]+)/", $email))
{
Show_error("E-mail address not valid");
}
/* If URL is not valid set $website to empty */
if (!preg_match("/^(https?://+[w-]+.[w-]+)/i", $website))
{
$website = '';
}
/* Let's prepare the message for the e-mail */
$message = "Hello!
Your contact form has been submitted by:
Name: $yourname
E-mail: $email
URL: $website
Like the website? $likeit
How did he/she find it? $how_find
Comments:
$comments
End of message
";
/* Send the message using mail() function */
mail($myemail, $subject, $message);
/* Set a cookie to prevent duplicate submissions */
setcookie('FormSubmitted', '1');
/* Redirect visitor to the thank you page */
header('Location: thanks.htm');
exit();
/* Functions we used */
function check_input($data, $problem='')
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
If ($problem && strlen($data) == 0)
{
show_error($problem);
}
Return $data;
}
function show_error($myError)
{
?>
Please correct the following error:
exit();
}
?