其實原理很簡單,你說自動生成URL那一步不會,首先URL分為兩部分:
第一部分是一個驗證地址并且?guī)б粋€標識用戶id的參數(shù),比如:http://www.xxx.com/active.php?uid=1
第二部分其實就是一個用來驗證的字符串,比如:authcode=asdad1f323ff43f
合起來就是http://www.xxx.com/active.php?uid=1&authcode=asdad1f323ff43f
第一部分是你來決定的,active.php就是你寫的那個做驗證腳本,所以你可以知道地址了?
第二部分不就是個隨機生成的字符串嗎?你可以用:md5(自己的域名+時間戳+驗證的用戶名)這個公式來生成這個串。當然你可以自己定義如何組合這個串,只要保證他們不是有規(guī)律讓人一下猜到的,也別重復(fù)的就可以。
很簡單是嗎?
至于何時生成,何時驗證,你可以這樣設(shè)計:
你可以在用戶表中,加兩個字段:1 (bool isActive)用戶是否已激活,默認為false。2 (string authcode)臨時激活碼。
當用戶注冊后,或點擊激活按鈕后,就執(zhí)行你的一個腳本:
1 生成激活碼,就是我上面說的方法。
2 將這個激活碼,存儲這個激活碼到用戶表的authcode字段。
3 將你的完整激活地址,用郵件發(fā)送到用戶的郵箱
4 你的那個腳本,在接收到請求時,將兩個參數(shù)取下來去用戶表中搜索uid=1的用戶的authcode是否與數(shù)據(jù)庫中的相等,如果相等,驗證通過,并清空update isActive字段為true,authcode字段更新為空。
就是這樣,當然,為了避免生成了重復(fù)的驗證碼和別人的猜解,你可以給authcode設(shè)置超時時間。這個有很多種做法,你可以給用戶表再加個字段是一個時間戳,用當前時間戳+有效的時間戳期限,比如time()+3600,這個就是一個小時的超時時間,驗證時,你可以同時再比對下是否在這個時間戳之內(nèi)。這種東西,你也可以放在緩存或內(nèi)存中。這樣會更好。
你可能還需要做一個開關(guān),也許你今天想讓新注冊的用戶都需要郵件激活,而明天也許你又不想了。用來控制,是否需要郵件激活。首先判斷這個值為true的話,所有注冊用戶的isActive都為false,否則都為true。
為崇左等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及崇左網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、崇左網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
網(wǎng)站名稱:php注冊時候郵箱驗證的原理
文章源于:http://www.chinadenli.net/article4/jiipoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、服務(wù)器托管、定制開發(fā)、、手機網(wǎng)站建設(shè)、網(wǎng)站維護
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)