亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用戶提交的表單,有的時候會因為網絡延遲重復提交內容

用戶提交的表單,有的時候會因為網絡延遲重復提交內容

守著星空守著你 2023-04-25 23:19:48
我遇到的是通過ajax方式提交,所以還停留在本頁面,但是回饋沒做好,總之用戶沒感知到,還會繼續點擊發送按鈕,結果一下就出現了好多條嗯,大概說說自己的想法,希望能得大家的指點:前端:前端的話,當表單提交,這時候按鈕變成disable狀態后端:生成一個token放在表單的隱藏字段里,服務器端保留,并等待帶用戶提交時對照令牌我的問題是:1.在真正的應用環境里,一般這種情況只做前端或者后端的處理是不是足夠2.如果要生成令牌的話,保存在哪里合適,session或者數據庫里,當然session可能本身就在內存里不是文件3.保存多少條合適,會不會有用戶開來了無數的頁面造成數據過量...可能是惡意用戶4.也許這也涉及到令牌保存多長時間,比如寫一篇文章的時間和回復一篇文章的時間也不一樣,是不是需要考慮5.這里令牌的生成有沒有特殊講究謝謝大家了啦~!問題還算有一般性吧,不過我用的環境是php apache mysql
查看完整描述

1 回答

?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

我們知道每個用戶在訪問的時候session_id都不同,可以以這個session_id作為key,實現一個簡單的鎖機制。

例如,MySQL 的內存表,設置某個字段的索引為唯一的,用戶提交表單就先寫一條記錄(鎖),如果沖突則表示重復提交。提交后處理完成后,則刪除這條記錄。缺點是需要額外的一個守護進程,刪除那些由于意外沒有被刪掉的鎖,當然也可以加個時間戳字段,比如超過30秒就當做鎖已經失效。

除了 MySQL 的內存表,redis 也適合實現這樣的簡單的鎖機制,這可以通過 redis 的事務機制來實現的。


查看完整回答
反對 回復 2023-04-28
  • 1 回答
  • 0 關注
  • 315 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號