Heim  >  Artikel  >  Backend-Entwicklung  >  PHP implementiert die E-Mail-Verifizierung

PHP implementiert die E-Mail-Verifizierung

藏色散人
藏色散人Original
2020-09-30 10:06:406377Durchsuche

So implementieren Sie die E-Mail-Verifizierung in PHP: Laden Sie zuerst phpMailer herunter, entpacken Sie es dann in das Projektstammverzeichnis. Anschließend müssen Sie in „config.php“ die E-Mail-bezogenen Informationen konfigurieren und eine öffentliche Methode zum Senden von E-Mails erstellen Das ist es.

PHP implementiert die E-Mail-Verifizierung

Empfohlen: „PHP-Video-Tutorial

1. Einführung

Voraussetzung ist, dass Benutzer bei der Registrierung ihre E-Mail-Adresse angeben, bevor sie sich anmelden können.

2. Führen Sie den

-Verifizierungsprozess durch. Nach erfolgreicher Registrierung wird der Bestätigungscode in Form einer Verbindung an die Mailbox des Benutzers gesendet zurück zur Website; die Website überprüft, ob der Verifizierungscode für diesen vom Benutzer generierten Verifizierungscode bestimmt ist, der innerhalb von 24 Stunden verifiziert werden muss; andernfalls wird das Konto ungültig.

1. Vorbereitung

Sie müssen die phpMailer-Klasse hinzufügen, um E-Mails zu senden. Laden Sie phpMailer herunter und extrahieren Sie es in das Stammverzeichnis des Projekts.

Um E-Mails zu senden, verwenden Sie das SMTP-Protokoll, der Port ist 25; zum Empfangen von E-Mails verwenden Sie das Pop3-Protokoll, die Portnummer ist 110. Außerdem ist ein Mailserver erforderlich. Sie können es selbst erstellen oder eines eines Drittanbieters verwenden. Für die Verwendung eines Mailservers eines Drittanbieters ist die Registrierung eines Kontos beim Drittanbieter erforderlich. Melden Sie sich an und aktivieren Sie das SMTP-Protokoll.

Konfigurieren Sie E-Mail-bezogene Informationen in config.php.

   'EMAIL' => array(

       'host' => 'smtp.163.com',

       'user' => 'youxiangzhanghao',

       'password' => 'password', //此处的密码为user邮箱在开启smtp时设置的授权密码。     

),

2. Erstellen Sie eine öffentliche Methode zum Senden von E-Mails

/**

 * 发送邮件的方法

 */

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());

}

Testen Sie die Mitgliedertabelle, fügen Sie das E-Mail-Feld und das Bestätigungscode-Feld hinzu

//测试发送邮件

var_dump(sendMail(&#39;haha@163.com&#39;,&#39;phptestemail&#39;, &#39;<a href="http://www.phptest.com">hahahah</a>&#39;));

4 E-Mail

Ändern Sie das Registrierungsformular und fügen Sie das E-Mail-Feld hinzu. Ändern Sie das Mitgliedermodell, um das Einfügen des E-Mail-Felds zu ermöglichen, und fügen Sie das E-Mail-Feld als Verifizierungsregel für E-Mail hinzu.

5. Generieren Sie vor der Registrierung einen E-Mail-Bestätigungscode

In der _before_insert()-Methode

email  varchar(150)  not  null comment  &#39;邮箱&#39;,

email_chkcode  char(32)  not  null default  &#39;&#39;  comment  &#39;邮箱验证码&#39;,

email_chkcode_time  int  unsigned  not  null comment  &#39;邮箱验证码生成时间&#39;,

key  email_chkcode(email_chkcode)

6. Senden Sie nach der Registrierung den Bestätigungscode an die E-Mail-Adresse des Benutzers

                   //生成email验证码

                   $data[&#39;email_chkcode&#39;]= md5(uniqid());

                   $data[&#39;email_chkcode_time&#39;]= time();

7

         /**

          * 注册后的钩子函数

          */

         protected function _after_insert($data,$option)

         {

                   $content = "欢迎注册,请点击以下完成验证:<p><a href=&#39;http://www.php2.com/eshop/index.php/Home/Member/email_chk/code/{$data[&#39;email_chkcode&#39;]}&#39;>请点击</a></p>";

                   sendMail($data[&#39;email&#39;],&#39;php2网站邮箱验证&#39;, $content);

         }

8 .           Ändern Sie die Anmeldemethode im Mitgliedschaftsmodell

    /**

     * 完成邮箱验证方法

     */

    public function email_chk()

    {

        //接收验证码

        $code = I(&#39;get.code&#39;);

        //查询这个验证码是否有效

        $member = D(&#39;Admin/Member&#39;);

        $info = $member->field(&#39;id,email_chkcode_time&#39;)->where(array(

            &#39;email_chkcode&#39; => $code,

        ))->find();

        if($info)

        {

            if((time() -$info[&#39;email_chkcode_time&#39;]) > 86400)

            {

                //帐号过期,删除这个帐号

               $member->delete($info[&#39;id&#39;]);

                $this->error(&#39;验证码已过期,帐号已经删除,请重新注册&#39;, U(&#39;regist&#39;));

                exit;

            }

            else

            {

                //验证通过,将验证码清空

                $member->where(array(

                    &#39;id&#39; => $info[&#39;id&#39;],

               ))->setFielf(&#39;email_chkcode&#39;, &#39;&#39;);

                $this->success(&#39;验证通过,请登陆&#39;, U(&#39;login&#39;));

                exit;

            }

        }

        else

        {

            $this->error(&#39;参数错误&#39;, U(&#39;/&#39;));

            exit;

        }

    }

9.         Ändern Sie den Registrierungscode

Wenn ein Konto bereits vorhanden ist, aber abgelaufen ist und nicht verifiziert wurde, können Sie das Konto löschen.

Fügen Sie bei der Registrierung eine Formularüberprüfung hinzu und fügen Sie eine Überprüfung der Einzigartigkeit und einen Registrierungsbestätigungscode für Benutzernamen und E-Mail hinzu.

   # , 'Rückruf', 3),

         //判断这个帐号是否通过验证码验证

         if(!empty($user[&#39;email_chkcode&#39;]))

         {

                   $this->error= &#39;必须验证后才可以登陆&#39;;

                   returnfalse;

         }

10

Das obige ist der detaillierte Inhalt vonPHP implementiert die E-Mail-Verifizierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn