防止用戶將表單重復(fù)提交的方法匯總
表單重復(fù)提交是在多用戶Web應(yīng)用中最常見、帶來很多麻煩的一個問題。有很多的應(yīng)用場景都會遇到重復(fù)提交問題,比如:
點擊提交按鈕兩次。 點擊刷新按鈕。 使用瀏覽器后退按鈕重復(fù)之前的操作,導致重復(fù)提交表單。 使用瀏覽器歷史記錄重復(fù)提交表單。 瀏覽器重復(fù)的HTTP請求。
幾種防止表單重復(fù)提交的方法
1.禁掉提交按鈕。表單提交后使用Javascript使提交按鈕disable。這種方法防止心急的用戶多次點擊按鈕。但有個問題,如果客戶端把Javascript給禁止掉,這種方法就無效了。
我之前的文章曾說過用一些Jquery插件效果不錯。
2.Post/Redirect/Get模式。在提交后執(zhí)行頁面重定向,這就是所謂的Post-Redirect-Get (PRG)模式。簡言之,當用戶提交了表單后,你去執(zhí)行一個客戶端的重定向,轉(zhuǎn)到提交成功信息頁面。
這能避免用戶按F5導致的重復(fù)提交,而其也不會出現(xiàn)瀏覽器表單重復(fù)提交的警告,也能消除按瀏覽器前進和后退按導致的同樣問題。
3.在session中存放一個特殊標志。當表單頁面被請求時,生成一個特殊的字符標志串,存在session中,同時放在表單的隱藏域里。接受處理表單數(shù)據(jù)時,檢查標識字串是否存在,并立即從session中刪除它,然后正常處理數(shù)據(jù)。
如果發(fā)現(xiàn)表單提交里沒有有效的標志串,這說明表單已經(jīng)被提交過了,忽略這次提交。
這使你的web應(yīng)用有了更高級的XSRF保護。
4.在數(shù)據(jù)庫里添加約束。在數(shù)據(jù)庫里添加唯一約束或創(chuàng)建唯一索引,防止出現(xiàn)重復(fù)數(shù)據(jù)。這是最有效的防止重復(fù)提交數(shù)據(jù)的方法。
以上就是這4種方法的介紹了,小伙伴們?nèi)绻懈玫慕鉀Q方法,也請告之,本文將持續(xù)更新。
您可能感興趣的文章
- 01-10HTML繪制用戶注冊頁面
- 01-10簡單html以及css的用法詳解
- 01-10html格式化輸出JSON示例(測試接口)
- 01-10html2canvas 將html代碼轉(zhuǎn)為圖片的使用方法


閱讀排行
本欄相關(guān)
- 04-02表格樣式css樣式,css樣式表單
- 04-02好看的字體樣式css,好看的字體樣式圖
- 04-02分頁樣式css,分頁樣式j(luò)q
- 04-02分頁樣式css,分頁樣式欄里用來定義首
- 04-02css樣式的引入,css樣式怎么引入
- 04-02css滾動條樣式,css滾動條的樣式
- 04-02css樣式引入方式有幾種,網(wǎng)頁引入css樣
- 04-02html中加入css樣式的簡單介紹
- 04-02vue中的css樣式布局,vue添加css樣式
- 04-02內(nèi)嵌樣式css,內(nèi)嵌樣式表,內(nèi)部樣式表
隨機閱讀
- 01-10C++實現(xiàn)將數(shù)組中的值反轉(zhuǎn)
- 08-05dedecms織夢模板編輯文檔的同時自動更
- 01-11常用的HTML富文本編譯器UEditor、CKEdi
- 01-10bat批處理徹底隱藏文件的方法(使用
- 08-05dedecms織夢模板全站調(diào)用收藏數(shù)的方法
- 01-10C++ 類訪問控制的條件總結(jié)
- 08-05DEDECMS點擊主欄目默認顯示第一個子欄
- 01-10C語言打印楊輝三角示例匯總
- 08-05織夢dedecms首頁調(diào)用縮略圖為背景
- 01-10vue實現(xiàn)分頁加載效果