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

首頁 > 編程 > PHP > 正文

PHP如何發送郵件來進行用戶驗證

2020-03-22 18:55:50
字體:
來源:轉載
供稿:網友
網站有時會需要用到郵箱驗證來防止用戶惡意注冊、驗證身份等操作。可是如何使用PHP后端來發送驗證郵件呢?本文就以一套注冊實例來講解PHP是如何去發送郵件的。

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

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

<form method="post" action="http://mydomain.com/registration/">    <fieldset>        <label for="fname">First Name:</label>        <input type="text" name="fname" required />    </fieldset>    <fieldset>        <label for="lname">Last Name:</label>        <input type="text" name="lname" required />    </fieldset>    <fieldset>        <label for="email">Last name:</label>        <input type="email" name="email" required />    </fieldset>    <fieldset>        <label for="password">Password:</label>        <input type="password" name="password" required />    </fieldset>    <fieldset>        <label for="cpassword">Confirm Password:</label>        <input type="password" name="cpassword" required />    </fieldset>    <fieldset>        <button type="submit">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>    <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小時,之后就過期。引入一個工作隊列就可以很好的及時處理那些已經過期的驗證鏈接。

相關推薦:

php完整驗證碼代碼 php 生成驗證碼 php 短信驗證碼 php驗證碼代

php 短信接口的示例代碼(入門)

php 短信網關短信內容不能有空格,短信網關短信內容_PHP教程

以上就是PHP如何發送郵件來進行用戶驗證的詳細內容,更多請關注 其它相關文章!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品露脸自拍| 成人在线视频福利| 美女久久久久久久| 久久精品99久久久香蕉| 久久99国产精品自在自在app| 欧美激情视频在线观看| www.欧美精品一二三区| 国产精品一区二区久久| 精品国产一区久久久| 久久99亚洲精品| 久久亚洲精品一区| 欧美高清在线播放| 亚洲精品视频中文字幕| 久久久亚洲影院你懂的| 国产精品爽爽爽| 亚洲福利在线播放| 中文字幕日韩精品在线观看| 日韩黄色高清视频| 影音先锋欧美精品| 成年人精品视频| 91精品国产99| 久久精品电影网站| 清纯唯美日韩制服另类| 91精品免费久久久久久久久| 亚洲男人天天操| 色www亚洲国产张柏芝| 国产精品永久免费在线| 97视频com| 欧美另类高清videos| 日韩精品免费在线视频观看| 日韩美女视频在线观看| 欧美日韩成人精品| 日本高清久久天堂| 裸体女人亚洲精品一区| 国产欧美一区二区三区在线看| 一区二区三区www| 精品国产一区二区三区久久久| 精品国偷自产在线视频| 日韩电影在线观看永久视频免费网站| x99av成人免费| 久久久久久国产精品三级玉女聊斋| 精品国产一区二区三区四区在线观看| 亚洲欧美激情视频| 国产日韩精品视频| 久久久久久国产精品| 欧美一级大片在线免费观看| 日韩在线播放一区| 亚洲国产91色在线| 日韩在线观看电影| 日韩在线观看免费高清| 欧美人在线观看| 日本视频久久久| 日韩av在线免费观看| 国产成人午夜视频网址| 国产一区在线播放| 欧美另类在线播放| 不卡在线观看电视剧完整版| 国产精品av免费在线观看| 亚洲精品短视频| 亚洲最大中文字幕| 最近2019年好看中文字幕视频| 亚洲精品按摩视频| 欧美做受高潮1| 国色天香2019中文字幕在线观看| 日韩在线视频二区| 自拍亚洲一区欧美另类| 久久资源免费视频| 97免费视频在线播放| 欧美性猛交xxxx黑人| 国产精品青草久久久久福利99| 国产成人精品久久久| 国产精品入口夜色视频大尺度| 日韩精品极品毛片系列视频| 欧美日韩亚洲视频一区| 亚洲国产成人爱av在线播放| 一区二区三区黄色| 影音先锋日韩有码| 国产一区二区动漫| 92福利视频午夜1000合集在线观看| 国产精品男人爽免费视频1| 91在线免费网站| 成人美女免费网站视频| 国产精品美女久久久久av超清| 日韩精品视频三区| 中文字幕亚洲综合久久| 不卡av电影在线观看| 欧美www视频在线观看| 久久久中文字幕| 亚洲男女自偷自拍图片另类| 亚洲男人的天堂在线播放| 亚洲自拍偷拍视频| 亚洲精品日韩久久久| 少妇精69xxtheporn| 免费av在线一区| 欧美日韩亚洲视频| 久久久久久亚洲精品中文字幕| 欧美综合在线观看| 国产日产亚洲精品| 日韩欧美中文第一页| 国产精品一区二区av影院萌芽| 97热精品视频官网| 国产在线999| 日韩美女主播视频| 夜夜躁日日躁狠狠久久88av| 伊人久久久久久久久久久久久| 亚洲精品国产成人| 高跟丝袜一区二区三区| 国产aⅴ夜夜欢一区二区三区| 精品伊人久久97| 国产亚洲精品91在线| 国产精品丝袜久久久久久不卡| 亚洲已满18点击进入在线看片| 91爱视频在线| 欧美日韩亚洲系列| 日韩在线观看免费全| 国产婷婷色综合av蜜臀av| 欧美专区在线观看| 亚洲精品之草原avav久久| 91免费精品国偷自产在线| xx视频.9999.com| 亚洲片国产一区一级在线观看| 欧美成人免费在线视频| 久久精品视频导航| 精品久久久久久久久久久久久久| 亚洲视频欧美视频| 国产精品视频久久| 日韩国产高清污视频在线观看| 久久久久国色av免费观看性色| 国产福利视频一区二区| 亚洲日本欧美日韩高观看| 精品国产91久久久| 中文字幕欧美亚洲| 亚洲色图av在线| 日韩中文字幕网站| 欧美日韩美女在线| 日韩欧美国产免费播放| 国产精品久久久久91| 97香蕉超级碰碰久久免费软件| 一区二区中文字幕| 亚洲欧美在线第一页| 亚洲一区二区在线| 午夜精品在线观看| 国产成人+综合亚洲+天堂| 国产激情999| 成人高清视频观看www| 国产日韩换脸av一区在线观看| 国产男女猛烈无遮挡91| 亚洲xxx大片| 亚洲免费高清视频| 精品久久久久久久久久| 91免费视频网站| 成人欧美一区二区三区在线| 日韩av一区在线| 国产成人精品久久亚洲高清不卡| 国产一区二区三区直播精品电影| 岛国av一区二区三区| 久久久久久久影院| 日韩av一区在线观看| 久久国产精品99国产精| 欧美亚洲视频一区二区| 98视频在线噜噜噜国产| 97人人模人人爽人人喊中文字| 国产精品久久久一区| 在线精品国产欧美|