2016-09-18 335 views
0

我有一些表格简单的电子邮件的脚本,我得到重复提交...如何防止重复表单提交

那么,什么是防止重复提交的最简单的方法?

我的代码..

<form action="main_contact.php" method="post" name="contact_form"> 
        <input type="text" name="contact_name" placeholder="Name"> 
        <input type="email" name="contact_email" placeholder="Email"> 
        <input type="text" name="contact_subject" placeholder="Subject"> 
        <textarea cols="30" name="contact_message" rows="10" placeholder="Your Message"></textarea> 
        <input type="submit" value="Send"> 
       </form> 

<?php 
        if(isset($_POST['contact_form'])){ 
        var_dump($_POST); 
        } 
       ?> 
+0

你检查日志,以尝试的形式和拼凑用户的旅程? – Progrock

+0

对不起,我不明白? –

+0

我的意思是为什么会发生这种行为?用户是否在等待某些事情发生,并多次点击按钮?或者日志或分析揭示另一个原因?另见:http://stackoverflow.com/questions/926816/how-to-prevent-form-from-submitting-multiple-times-from-client-side – Progrock

回答

-1

如果你使用像Laravel5或Symfony的任何框架,你会得到它的“开箱即用”。

总之: 注册一个会话令牌并在第一次提交表单后使其无效。

+0

嘿..它简单的电子邮件脚本,所以没有MySql .. –

+0

你不需要MySql来启动一个会话并注册一个令牌。 –

1

您可以使用jQuery禁用按钮提交表单提交后:

$('form[name="contact_form"]').submit(function(){ 
    $(this).find('input[type="submit"]').prop('disabled', true); 
}); 
+0

这是一个直接的方法。此外,请确保您在提交后向用户显示成功消息。即使重定向到成功页面也是有效的,并且可以帮助跟踪转换。 :) –

0

你只需要禁用或使可见性隐藏后,只需点击提交按钮。拳头给予id的提交按钮

<input type="submit" value="Send" id="sub_id"> 

,然后使其隐藏或禁用JavaScript中,一旦你提交

document.getElementById('sub_id').style.visibility='hidden';