我遇到的是通過ajax方式提交,所以還停留在本頁面,但是回饋沒做好,總之用戶沒感知到,還會繼續(xù)點(diǎn)擊發(fā)送按鈕,結(jié)果一下就出現(xiàn)了好多條嗯,大概說說自己的想法,希望能得大家的指點(diǎn):前端:前端的話,當(dāng)表單提交,這時候按鈕變成disable狀態(tài)后端:生成一個token放在表單的隱藏字段里,服務(wù)器端保留,并等待帶用戶提交時對照令牌我的問題是:1.在真正的應(yīng)用環(huán)境里,一般這種情況只做前端或者后端的處理是不是足夠2.如果要生成令牌的話,保存在哪里合適,session或者數(shù)據(jù)庫里,當(dāng)然session可能本身就在內(nèi)存里不是文件3.保存多少條合適,會不會有用戶開來了無數(shù)的頁面造成數(shù)據(jù)過量...可能是惡意用戶4.也許這也涉及到令牌保存多長時間,比如寫一篇文章的時間和回復(fù)一篇文章的時間也不一樣,是不是需要考慮5.這里令牌的生成有沒有特殊講究謝謝大家了啦~!問題還算有一般性吧,不過我用的環(huán)境是php apache mysql
1 回答
互換的青春
TA貢獻(xiàn)1797條經(jīng)驗 獲得超6個贊
我們知道每個用戶在訪問的時候session_id都不同,可以以這個session_id作為key,實(shí)現(xiàn)一個簡單的鎖機(jī)制。
例如,MySQL 的內(nèi)存表,設(shè)置某個字段的索引為唯一的,用戶提交表單就先寫一條記錄(鎖),如果沖突則表示重復(fù)提交。提交后處理完成后,則刪除這條記錄。缺點(diǎn)是需要額外的一個守護(hù)進(jìn)程,刪除那些由于意外沒有被刪掉的鎖,當(dāng)然也可以加個時間戳字段,比如超過30秒就當(dāng)做鎖已經(jīng)失效。
除了 MySQL 的內(nèi)存表,redis 也適合實(shí)現(xiàn)這樣的簡單的鎖機(jī)制,這可以通過 redis 的事務(wù)機(jī)制來實(shí)現(xiàn)的。
添加回答
舉報
0/150
提交
取消
