第一種方法:javascript控制。缺點,一般用戶使用沒問題,但是懂點js的還是可以強行重復提交。而且,後退再提交,你也沒啥辦法。
第二種方法:服務器控制。
後台生成一個token,存入session或者其他緩存裡面。渲染表單時,給form一個隱藏的token(令牌).
用戶提交表單時:
先判斷表單裡面的token是否存在,不存在拒絕接受此數據;
如果存在token,判斷此表單裡的token是否和session裡的token一致,如果不一致,拒絕處理數據;如果一致,處理表單,並從session裡移除此token.
那麼,當用戶成功提交表單後,如果再次提交,會因為session裡的token已刪除,從而讓服務器告訴用戶“不要重復提交表單!”.
代碼就不附上了。That's all.