3 回答

TA貢獻1777條經驗 獲得超3個贊
最常用的方法就是利用token。即:
1、在生成頁面的時候生成一個token(隨機字符串),并把它同時寫入表單的某個hidden中,和服務端的session中。
2、客戶端提交表單到服務器時,比對表單中的token與session中的token是否一致。若不一致則認為是無效的請求。
3、不管第2步的校驗是否通過,token只要使用一次后就立即作廢(即:從session中銷毀)。同時token也可以關聯時間信息,超時后也自動作廢。
這樣,即便客戶端重復提交,也只有第一次的請求能夠成功。

TA貢獻1804條經驗 獲得超3個贊
這只是一個小技巧,用來避免一個表單的重復提交。這樣多少可以防止一些灌水的現象,另外有時候由于網絡狀況等原因用戶不知道提交是否成功,也會再次提交同一份表單。 這個技巧的主要原理是不允許用戶回退后再次提交,也就是說回退后修改再提交也是不允許的,而且也不能避免Ctrl-C/Ctrl-V的灌水辦法。究竟有沒有用,還是看各位站長的喜好了 你是否遇到過“重復提交”的問題?要解決這個問題其實并不難。這里有一個簡單的方法避免同一表單的重復提交。 首先,我們可以定義一個session變量用來保存一個表單的提交序列號。這里我定義為“$userLastAction”。然后在表單里加入一個hidden變量,把值設為$userLastAction+1: 最后,在處理提交之前判斷表單是否已被提交過: if($lastAction$userLastAction and inputIsValid(...)){// 處理表單數據}
- 3 回答
- 0 關注
- 916 瀏覽
添加回答
舉報