亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php實現郵箱驗證的方法

發布時間:2020-10-09 17:21:01 來源:億速云 閱讀:551 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關php實現郵箱驗證的方法的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

php實現郵箱驗證的方法:首先下載phpMailer;然后解壓到項目根目錄下;接著需要一臺郵件服務器;最后在“config.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;

            }

        }

        else

        {

            $this->error('參數錯誤', U('/'));

            exit;

        }

    }

8.        修改會員模型中的登陸方法

         //判斷這個帳號是否通過驗證碼驗證

         if(!empty($user['email_chkcode']))

         {

                   $this->error= '必須驗證后才可以登陸';

                   returnfalse;

         }

9.        修改注冊代碼

如果一個帳號已經存在,但是過期沒有驗證,可以刪除這個帳號。

添加注冊時的表單驗證,為username和email添加關于唯一性和注冊驗證碼的驗證。

array('email','chk_un_email', 'email已經存在!', 1,'callback', 3),

array('username','chk_un_user', '用戶名已經存在!', 1,'callback', 3),

         //驗證已經存在的郵箱是否通過驗證

         public function chk_un_email()

         {

                   $email = I('post.email');

                   $username =I('post.username');

                   $hasEmail =$this->field('id,email_chkcode,email_chkcode_time')->where(array(

                            'email' =>$email,

                   ))->find();

                   if($hasEmail)

                   {

                            if(empty($hasEmail['email_chkcode']))

                            {

                                     returnfalse;

                            }

                            else

                            {

                                     if(time() -$hasEmail['email_chkcode_time'] > 86400)

                                     {

                                               $this->delete($hasEmail['id']);

                                               returntrue;

                                     }

                                     else

                                     {

                                               returnfalse;

                                     }

                            }

                   }

                   else

                   {

                            return true;

                   }

         }



         //驗證已經存在的用戶名是否通過驗證

         public function chk_un_user()

         {

                   $username =I('post.username');

                   $hasUsername =$this->field('id,email_chkcode,email_chkcode_time')->where(array(

                            'username' =>$username,

                   ))->find();

                   if($hasUsername)

                   {

                            if(empty($hasUsername['email_chkcode']))

                            {

                                     returnfalse;

                            }

                            else

                            {

                                     if(time() -$hasUsername['email_chkcode_time'] > 86400)

                                     {

                                               $this->delete($hasUsername['id']);

                                               returntrue;

                                     }

                                     else

                                     {

                                               returnfalse;

                                     }

                            }

                   }

                   else

                   {

                            return true;

                   }

         }

感謝各位的閱讀!關于php實現郵箱驗證的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

祁门县| 彭州市| 尚义县| 连平县| 金平| 稻城县| 新竹市| 黎城县| 和田县| 长沙县| 肃宁县| 安丘市| 四平市| 莒南县| 甘肃省| 沁源县| 永丰县| 高密市| 确山县| 茂名市| 湖北省| 苍山县| 安义县| 新丰县| 惠安县| 大丰市| 卓资县| 双城市| 农安县| 共和县| 临澧县| 紫云| 临武县| 南陵县| 民丰县| 淅川县| 白山市| 海原县| 永嘉县| 定结县| 东城区|