2016-09-18 331 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';