我遇到的是通過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 的事務機制來實現的。
添加回答
舉報
0/150
提交
取消