javascript - JS或者PHP端如何防止重複提交?

來源:互聯網
上載者:User
關鍵字 javascript php
如果重複提交的話會在資料表裡累加資料,有解決辦法嗎?

回複內容:

如果重複提交的話會在資料表裡累加資料,有解決辦法嗎?

Post/Redirect/Get 簡稱PRG,是一種用來防止表單重複提交資料的一種Web設計模式.

伺服器端:
1.增加表單令牌,驗證通過令牌失效。
2.如果有欄位必須唯一,資料庫設定唯一欄位。
3.session儲存最後提交的部分資料,判斷是否一致。
4.成功後跳轉新頁面。
JS端:
1.提交後,取消提交事件或設定為不可點擊。
2.成功後,重新載入頁面。

資料庫裡把欄位設為UNIQUE的,然後PHP插入語句遇到重複的會執行錯誤,你捕捉到錯誤就知道是插入失敗了。

  1. Ajax 提交後,設定 submit 為不可點擊

  2. 資料庫設定 唯一索引,防止重複資料

方法如下,詳情看注釋

var tag = 0;$('.xxx').on('submit', function() {    // 只有在tag = 0 的時候才能執行提交事件    if(tag == 0) {        // 提交事件執行的第一時間,將tag值改變,這樣當再次觸發submit時,就不會執行任何行為了        tag = 1;        // do something        // 還可以在某些滿足條件的情況下將tag值還原成0,讓事件可以再次執行    }})

單擊提交時間,返回成功後,將表單中的內容清空。這樣避免了重複提交

參考laravel csrf-token https://laravel.com/docs/5.1/routing#csrf-x-csrf-token

前端的話
貌似是bootstrap或者jquery有一個button方法
比如可以在button增加一個data屬性

提交
js:
$('#submit').button('submit').on()

這樣就可以自動disable掉button 並且顯示data-submit的文字

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.