php實現郵箱驗證的方法:首先下載phpmailer;然后解壓到項目根目錄下;接著需要一臺郵件服務器;最后在“config.php”中配置郵箱相關的信息并創建用于發送郵件的公用方法即可。
推薦:《php視頻教程》
一、introduction
需求是用戶在注冊時填寫email,注冊后,需要到郵箱驗證后才能登陸。
二、實現
驗證流程,注冊成功后,為用戶生成一個驗證碼;將驗證碼以連接方式發到用戶郵箱;用戶點擊連接將驗證碼發回網站;網站驗證這個驗證碼是否是為這個用戶生成的驗證碼;帳號需要在24小時內驗證,否則帳號失效。
1. 準備工作
需要添加phpmailer類來發郵件。下載phpmailer,然后解壓到項目根目錄下。
發郵件使用smtp協議,端口是25;收郵件,使用pop3協議,端口號是110。還需要一臺郵件服務器。可以自己搭建,也可以使用第三方的。使用第三方的郵件服務器需要在第三方注冊一個帳號。登陸開啟smtp協議。
在config.php中配置郵箱相關的信息。
'email' => array( 'host' => 'smtp.163.com', 'user' => 'youxiangzhanghao', 'password' => 'password', //此處的密碼為user郵箱在開啟smtp時設置的授權密碼。 ),2. 創建用于發送郵件的公用方法
/ * 發送郵件的方法 */functionsendmail($to, $title, $content){ require_once('./phpmailer-5.2.14/class.smtp.php'); require_once('./phpmailer-5.2.14/class.phpmailer.php'); $mail = new phpmailer(); //設置為發送郵件 $mail->issmtp(); //是否允許發送html代碼為郵件內容 $mail->ishtml(true); $mail->charset = 'utf-8'; //是否需要身份驗證 $mail->smtpauth = true; //郵件服務器的帳號信息 $mailconfig = c('email'); $mail->from =$mailconfig['user'].'@163.com'; $mail->fromname =$mailconfig['user']; $mail->host = $mailconfig['host']; $mail->username = $mailconfig['user']; $mail->password =$mailconfig['password']; //發郵件的端口號 $mail->port = 25; //收件人 $mail->addaddress($to); //郵件標題 $mail->subject = $title; //郵件內容 $mail->body = $content; return($mail->send());}在控制器的首頁方法中測試
//測試發送郵件var_dump(sendmail('haha@163.com','phptestemail', '<a href="http://www.phptest.com">hahahah</a>'));3. 修改會員表,添加email字段和驗證碼字段
email varchar(150) not null comment '郵箱',email_chkcode char(32) not null default '' comment '郵箱驗證碼',email_chkcode_time int unsigned not null comment '郵箱驗證碼生成時間',key email_chkcode(email_chkcode)4.修改注冊,必須填email
修改注冊表單,添加email字段;修改member模型,允許插入email字段,并增加email字段為email的驗證規則。
5.注冊之前生成email驗證碼
在_before_insert()方法中
//生成email驗證碼 $data['email_chkcode']= md5(uniqid()); $data['email_chkcode_time']= time();6. 注冊之后將驗證碼發給用戶郵箱
/ * 注冊后的鉤子函數 */ protected function _after_insert($data,$option) { $content = "歡迎注冊,請點擊以下完成驗證:<p><a href='http://www.php2.com/eshop/index.php/home/member/email_chk/code/{$data['email_chkcode']}'>請點擊</a></p>"; sendmail($data['email'],'php2網站郵箱驗證', $content); }7. 在member控制器添加方法完成驗證
/ * 完成郵箱驗證方法 */ public function email_chk() { //接收驗證碼 $code = i('get.code'); //查詢這個驗證碼是否有效 $member = d('admin/member'); $info = $member->field('id,email_chkcode_time')->where(array( 'email_chkcode' => $code, ))->find(); if($info) { if((time() -$info['email_chkcode_time']) > 86400) { //帳號過期,刪除這個帳號 $member->delete($info['id']); $this->error('驗證碼已過期,帳號已經刪除,請重新注冊', u('regist')); exit; } else { //驗證通過,將驗證碼清空 $member->where(array( 'id' => $info['id'], ))->setfielf('email_chkcode', ''); $this->success('驗證通過,請登陸', u('login')); exit;
評估報告怎么填寫-備案平臺巧用網站搜索框設計技巧和功能域名大全查詢如何使用云服務器搭建網站源碼4數字域名7833.com近30萬結拍 有規律品相好凱里云服務器多少錢云服務器部署織夢網站不要上手就學深度學習!超詳細的人工智能專家路線圖,GitHub數天獲2.1k星