幾種防止表單重複送出的方法
1.禁掉送出按鈕。表單送出後使用javascript使送出按鈕disable。這種方法防止心急的使用者多次點選按鈕。但有個問題,如果用戶端把javascript給禁止掉,這種方法就無效了。
我之前的文章曾說過用一些jquery插件效果不錯。
2.post/redirect/get模式。在送出後執行頁面重定向,這就是所謂的post-redirect-get (prg)模式。簡言之,當使用者送出了表單後,你去執行一個用戶端的重定向,轉到送出成功資訊頁面。
這能避免使用者按f5導緻的重複送出,而其也不會出現浏覽器表單重複送出的警告,也能消除按浏覽器前進和後退按鈕導緻的同樣問題。
3.在session中存放一個特殊标志。類似于“令牌”機制。當表單頁面第一次被請求時,生成一個特殊的字元标志串,存在session中,同時放在表單的隐藏域裡。接受處理表單資料時,檢查辨別字串是否存在,并立即從session中删除它,然後正常處理資料。
如果發現表單送出裡沒有有效的标志串,這說明表單已經被送出過了,忽略這次送出。
4.在資料庫裡添加限制。在資料庫裡添加唯一限制或建立唯一索引,防止出現重複資料。這是最有效的防止重複送出資料的方法。
參考文章:
f5重新整理緣何會引起表單重複送出
<a href="http://www.cnblogs.com/jinianjun/p/4076475.html" target="_blank">http://www.cnblogs.com/jinianjun/p/4076475.html</a>
strut2令牌機制
<a href="http://blog.csdn.net/sd0902/article/details/8442343" target="_blank">http://blog.csdn.net/sd0902/article/details/8442343</a>
<a href="http://blog.csdn.net/sd0902/article/details/8442343" target="_blank">http://blog.csdn.net/zyb243380456/article/details/7313771</a>
<a href="http://blog.csdn.net/sd0902/article/details/8442343" target="_blank"></a>
<a href="http://www.cnblogs.com/jinianjun/p/4076475.html" target="_blank"></a>