3 回答

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

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