PHP:避免重復(fù)提交和檢查數(shù)據(jù)來路_PHP教程
推薦:php設(shè)計模式介紹之值對象模式在所有的最簡單的程序中,大多數(shù)對象都有一個標(biāo)識,一個重要的商業(yè)應(yīng)用對象,例如一個Customer或者一個SKU,有一個或者更多的屬性---id,name,email地址,這樣可以把它從同一個類的其他實例區(qū)分開來。此外,對象有一個恒定的標(biāo)識:它是貫穿于整個應(yīng)用程序的一個
PHP Token(令牌)設(shè)計
設(shè)計目標(biāo):
避免重復(fù)提交數(shù)據(jù).
檢查來路,是否是外部提交
匹配要執(zhí)行的動作(如果有多個邏輯在同一個頁面實現(xiàn),比如新增,刪除,修改放到一個PHP文件里操作)
這里所說的token是在頁面顯示的時候,寫到FORM的一個隱藏表單項(type=hidden).
token不可明文,如果是明文,那就太危險了,所以要采用一定的加密方式.密文要可逆.俺算法很白癡,所以采用了網(wǎng)上一個現(xiàn)成的方法.
如何達(dá)到目的:
怎樣避免重復(fù)提交?
在SESSION里要存一個數(shù)組,這個數(shù)組存放以經(jīng)成功提交的token.在后臺處理時,先判斷這個token是否在這個數(shù)組里,如果存在,說明是重復(fù)提交.
如何檢查來路?
可選項,這個token在生成的時候,加入了當(dāng)前的session_id.如果別人copy你的html(token一迸copy),在提交時,理論上token里包含的session_id不等于當(dāng)前session_id,就可以判斷這次提交是外部提交.
如何匹配要執(zhí)行的動作?
在token的時候,要把這個token的動作名稱寫進(jìn)這個token里,這樣,在處理的時候,把這個動作解出來進(jìn)行比較就行了.
我以前寫的GToken不能達(dá)到上面所說的第二條,今天修改了一下,把功能2加上了.個人感覺還行.
分享:談PHP程序開發(fā)中的中文編碼問題PHP程序設(shè)計中中文編碼問題曾經(jīng)困擾很多人,導(dǎo)致這個問題的原因其實很簡單,每個國家(或區(qū)域)都規(guī)定了計算機信息交換用的字符編碼集,如美國的擴展 ASCII 碼, 中國的 GB2312-80,日本的 JIS 等。作為該國家/區(qū)域內(nèi)信息處理的基礎(chǔ),字符編碼集起著統(tǒng)一編碼的
- 相關(guān)鏈接:
- 教程說明:
PHP教程-PHP:避免重復(fù)提交和檢查數(shù)據(jù)來路。