日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

防止表单重复提交的解决方案整理

發布時間:2023/12/10 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 防止表单重复提交的解决方案整理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

用戶在操作表單Post數據時往往會出現表單數據重復提交的問題,尤其在Web開發中此類問題比較常見。刷新頁面,后退操作以前的頁面,單機多次按鈕都會導致數據重復提交。此類問題是因為瀏覽器重復提交HTTP請求導致。

下面列出了四種比較常用的解決方案:

1、在數據庫添加唯一字段

在數據庫建表的時候在ID字段添加主鍵約束,賬號,名稱的信息添加唯一性約束。確保數據庫只可以添加一條數據。

此方法從根本上的防止了數據重復提交。

2、用js為添加按鈕禁用

當用戶提交表單之后,可以使用js將提交按鈕隱藏(disable屬性),防止用戶多次點擊按鈕提交數據。

注意:如果客戶端禁用了js,則此方法無效。

3、使用Post/Redirect/Get

Post/Redirect/Get簡稱PRG,是一種可以防止表單數據重復提交的一種Web設計模式,像用戶刷新提交響應頁面等比較典型的重復提交表單數據的問題可以使用PRG模式來避免。例如:當用戶提交成功之后,執行客戶端重定向,跳轉到提交成功頁面。

注意:PRG設計模式并不適用所有的重復提交情況,比如:

1)由于服務器響應緩慢,用戶刷新提交POST請求造成的重復提交。

2)用戶點擊后退按鈕,返回到數據提交界面,導致的數據重復提交。

3)用戶多次點擊提交按鈕,導致的數據重復提交。

4)用戶惡意避開客戶端預防多次提交手段,進行重復數據提交。

4、使用Session設置令牌

客戶端請求頁面時,服務器為每次產生的Form表單分配唯一的隨機標識號,并且在orm的一個隱藏字段中設置這個標識號,同時在當前用戶的Session中保存這個標識號。當提交表單時,服務器比較hidden和session中的標識號是否相同,相同則繼續,處理完后清空Session,否則服務器忽略請求。

注意:惡意用戶可利用這一性質,不斷重復訪問頁面,以致Session中保存的標識號不斷增多,最終嚴重消耗服務器內存。可以采用在Session中記錄用戶發帖的時間,然后通過一個時間間隔來限制用戶連續發帖的數量來解決這一問題。

歡迎關注我的公眾號(同步更新文章):DoNet技術分享平臺

閱讀原文

總結

以上是生活随笔為你收集整理的防止表单重复提交的解决方案整理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。