亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP郵箱驗證示例教程

2024-05-04 23:46:59
字體:
來源:轉載
供稿:網友
這篇文章主要為大家詳細介紹了PHP郵箱驗證示例,通過實例一步步帶領大家認識PHP郵箱驗證的過程,感興趣的小伙伴們可以參考一下
 

在用戶注冊中最常見的安全驗證之一就是郵箱驗證。根據行業的一般做法,進行郵箱驗證是避免潛在的安全隱患一種非常重要的做法,現在就讓我們來討論一下這些最佳實踐,來看看如何在PHP中創建一個郵箱驗證。

讓我們先從一個注冊表單開始:

<form method="post" action="http://mydomain.com/registration/"> <fieldset class="form-group"> <label for="fname">First Name:</label> <input type="text" name="fname" class="form-control" required />  </fieldset>  <fieldset class="form-group"> <label for="lname">Last Name:</label> <input type="text" name="lname" class="form-control" required />  </fieldset>  <fieldset class="form-group"> <label for="email">Last name:</label> <input type="email" name="email" class="form-control" required />  </fieldset>  <fieldset class="form-group"> <label for="password">Password:</label> <input type="password" name="password" class="form-control" required />  </fieldset>  <fieldset class="form-group"> <label for="cpassword">Confirm Password:</label> <input type="password" name="cpassword" class="form-control" required />  </fieldset>  <fieldset>    <button type="submit" class="btn">Register</button>  </fieldset></form> 

接下來是數據庫的表結構:

CREATE TABLE IF NOT EXISTS `user` ( `id` INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, `fname` VARCHAR(255) , `lname` VARCHAR(255) , `email` VARCHAR(50) , `password` VARCHAR(50) , `is_active` INT(1) DEFAULT '0', `verify_token` VARCHAR(255) , `created_at` TIMESTAMP, `updated_at` TIMESTAMP,); 

一旦這個表單被提交了,我們就需要驗證用戶的輸入并且創建一個新用戶:

// Validation rules$rules = array(  'fname' => 'required|max:255',  'lname' => 'required|max:255', 'email' => 'required', 'password' => 'required|min:6|max:20', 'cpassword' => 'same:password');$validator = Validator::make(Input::all(), $rules);// If input not valid, go back to registration pageif($validator->fails()) { return Redirect::to('registration')->with('error', $validator->messages()->first())->withInput();}$user = new User();$user->fname = Input::get('fname');$user->lname = Input::get('lname');$user->password = Input::get('password');// You will generate the verification code here and save it to the database// Save user to the databaseif(!$user->save()) { // If unable to write to database for any reason, show the error return Redirect::to('registration')->with('error', 'Unable to write to database at this time. Please try again later.')->withInput();}// User is created and saved to database// Verification e-mail will be sent here// Go back to registration page and show the success messagereturn Redirect::to('registration')->with('success', 'You have successfully created an account. The verification link has been sent to e-mail address you have provided. Please click on that link to activate your account.');

 注冊之后,用戶的賬戶仍然是無效的直到用戶的郵箱被驗證。此功能確認用戶是輸入電子郵件地址的所有者,并有助于防止垃圾郵件以及未經授權的電子郵件使用和信息泄露。

 整個流程是非常簡單的——當一個新用戶被創建時,在注冊過過程中,一封包含驗證鏈接的郵件便會被發送到用戶填寫的郵箱地址中。在用戶點擊郵箱驗證鏈接和確認郵箱地址之前,用戶是不能進行登錄和使用網站應用的。

 關于驗證的鏈接有幾件事情是需要注意的。驗證的鏈接需要包含一個隨機生成的token,這個token應該足夠長并且只在一段時間段內是有效的,這樣做的方法是為了防止網絡攻擊。同時,郵箱驗證中也需要包含用戶的唯一標識,這樣就可以避免那些攻擊多用戶的潛在危險。

現在讓我們來看看在實踐中如何生成一個驗證鏈接:

// We will generate a random 32 alphanumeric string// It is almost impossible to brute-force this key space$code = str_random(32);$user->confirmation_code = $code; 

一旦這個驗證被創建就把他存儲到數據庫中,發送給用戶:

Mail::send('emails.email-confirmation', array('code' => $code, 'id' => $user->id), function($message){$message->from('my@domain.com', 'Mydomain.com')->to($user->email, $user->fname . ' ' . $user->lname)->subject('Mydomain.com: E-mail confirmation');}); 

郵箱驗證的內容:

<!DOCTYPE html><html lang="en-US"> <head> <meta charset="utf-8" /> </head> <body> <p style="margin:0">  Please confirm your e-mail address by clicking the following link:  <a href="http://mydomain.com/verify?code=<?php echo $code; ?>&user=<?php echo $id; ?>"></a> </p> </body></html> 

現在讓我們來驗證一下它是否可行:

$user = User::where('id', '=', Input::get('user'))  ->where('is_active', '=', 0)  ->where('verify_token', '=', Input::get('code'))  ->where('created_at', '>=', time() - (86400 * 2))  ->first();if($user) { $user->verify_token = null; $user->is_active = 1; if(!$user->save()) { // If unable to write to database for any reason, show the error return Redirect::to('verify')->with('error', 'Unable to connect to database at this time. Please try again later.'); } // Show the success message return Redirect::to('verify')->with('success', 'You account is now active. Thank you.');}// Code not valid, show error messagereturn Redirect::to('verify')->with('error', 'Verification code not valid.'); 

結論:
上面展示的代碼只是一個教程示例,并且沒有通過足夠的測試。在你的web應用中使用的時候請先測試一下。上面的代碼是在Laravel框架中完成的,但是你可以很輕松的把它遷移到其他的PHP框架中。同時,驗證鏈接的有效時間為48小時,之后就過期。引入一個工作隊列就可以很好的及時處理那些已經過期的驗證鏈接。

本文實PHPChina原創翻譯,原文轉載于http://www.phpchina.com/portal.php?mod=view&aid=39888,小編認為這篇文章很具有學習的價值,分享給大家,希望對大家的學習有所幫助。



注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美夜福利tv在线| 国产在线a不卡| 成人国内精品久久久久一区| 亚洲国产天堂网精品网站| 亚洲精品自在久久| 免费97视频在线精品国自产拍| 精品国产美女在线| 国产亚洲精品久久久久久牛牛| 精品福利樱桃av导航| 热草久综合在线| 国产婷婷97碰碰久久人人蜜臀| 91中文在线视频| 国产剧情久久久久久| xxxxx91麻豆| 亚洲性生活视频在线观看| 午夜剧场成人观在线视频免费观看| 欧美性xxxx| 在线成人激情黄色| 亚洲色在线视频| 日韩在线国产精品| 中文字幕一精品亚洲无线一区| 国产精品九九九| 国产一区二区日韩| 国产午夜精品视频免费不卡69堂| 色香阁99久久精品久久久| 国产精品夫妻激情| 国产精品欧美久久久| 久久九九热免费视频| 亚洲欧洲国产精品| 最近2019年好看中文字幕视频| 久久精品99久久香蕉国产色戒| 欧美日韩激情视频| 日韩亚洲国产中文字幕| 亚洲欧美激情另类校园| 久久精品男人天堂| 日韩中文字幕在线视频| 成人精品一区二区三区电影免费| 97国产精品久久| 日韩av在线免费看| 亚洲高清久久久久久| 亚洲日韩第一页| 色综久久综合桃花网| 亚洲精品av在线播放| 欧美精品videossex性护士| 伊人久久男人天堂| 亚洲精品v天堂中文字幕| 久久免费观看视频| 亚洲欧美三级在线| 亚洲欧洲自拍偷拍| 久久久91精品国产一区不卡| 一夜七次郎国产精品亚洲| 久久精品国产91精品亚洲| 国内精品美女av在线播放| 在线观看欧美日韩国产| 久久国产精品久久精品| 国产不卡av在线| 亚洲香蕉伊综合在人在线视看| 亚洲午夜国产成人av电影男同| 欧美日韩国产一中文字不卡| 亚洲黄页网在线观看| 国产午夜精品全部视频在线播放| 日韩精品视频免费在线观看| 久久久国产影院| 亚洲性av在线| 日韩精品久久久久| 中文字幕日韩精品有码视频| 亚洲精品在线视频| 亚洲最新av在线网站| 久久久久国产精品免费网站| 成人黄色av免费在线观看| 欧美亚洲成人xxx| 欧美电影电视剧在线观看| 亚洲综合国产精品| 丁香五六月婷婷久久激情| 日韩精品中文字幕有码专区| 国产男女猛烈无遮挡91| 国产丝袜精品第一页| 亚洲人成亚洲人成在线观看| 国产精品视频精品| 成人黄色生活片| 日本电影亚洲天堂| 国产精品av在线播放| 国产午夜精品理论片a级探花| 456国产精品| 中文字幕亚洲一区| 精品久久久中文| 欧美激情精品久久久久久变态| 久久精品国产视频| 国产欧美久久一区二区| 欧亚精品中文字幕| 成人国产精品久久久久久亚洲| 欧美成人小视频| 亚洲xxx自由成熟| 国产一区二区在线播放| 欧美成人剧情片在线观看| 亚洲精品久久久久久久久久久久| 亚洲视频第一页| 97av视频在线| 久久久久久久久国产精品| 国产美女高潮久久白浆| 久久伊人精品视频| 成人有码视频在线播放| 精品成人乱色一区二区| 成人乱色短篇合集| 69视频在线免费观看| 亚州国产精品久久久| 最近2019中文字幕在线高清| 92看片淫黄大片看国产片| 97精品国产97久久久久久| 国产午夜精品免费一区二区三区| 成人精品在线视频| 色无极亚洲影院| 欧美成人性生活| 2018日韩中文字幕| 久久免费视频网| 91精品国产91久久久久| 久久久天堂国产精品女人| 精品亚洲一区二区三区| 日韩中文字幕视频| 欧美在线亚洲一区| 动漫精品一区二区| 色狠狠av一区二区三区香蕉蜜桃| 亚洲欧美日韩国产中文| 色噜噜久久综合伊人一本| 欧美午夜丰满在线18影院| 日本三级韩国三级久久| 俺去亚洲欧洲欧美日韩| 国产欧美中文字幕| 欧美成人激情视频免费观看| 77777少妇光屁股久久一区| 隔壁老王国产在线精品| 国产精品444| 亚洲精品在线看| 欧美裸体xxxx极品少妇软件| 日韩在线精品一区| 福利一区福利二区微拍刺激| 在线观看欧美日韩| 精品久久久999| 日韩久久免费电影| 欧美在线欧美在线| 亚洲精品久久久久久久久久久久久| 久久国产精品久久精品| 国产精品第三页| 国产中文字幕91| 欧美一区三区三区高中清蜜桃| 成人精品视频久久久久| 亚洲男人天天操| 日韩中文字幕在线精品| 久久精品国产一区二区电影| 91精品视频播放| 欧洲成人在线视频| 久久精品视频99| 成人国产精品一区| 久久久久久中文| 国产在线视频不卡| 亚洲欧洲一区二区三区久久| 欧美激情区在线播放| 日韩动漫免费观看电视剧高清| 92国产精品久久久久首页| 丰满岳妇乱一区二区三区| 亚洲xxxxx性| 精品成人乱色一区二区| 亚洲欧美日韩国产精品| 国产成人精品999|