zoukankan      html  css  js  c++  java
  • PHP实现邮箱验证码验证功能

    *文章来源:https://blog.egsec.cn/archives/623  (我的主站)

    *本文将主要说明:PHP实现邮箱验证码验证功能,通过注册或登录向用户发送身份确认验证码,并通过判断输入的验证码是否正确做出登录判断。


    实现邮箱验证码功能有三个步骤:

    1、下载 PHPMailer 组件:https://github.com/PHPMailer/PHPMailer

    2、编写随机数(验证码)函数:

    <?php
    //生成6位随机验证码
    function codestr(){
        $arr=array_merge(range('a','b'),range('A','B'),range('0','9'));
        shuffle($arr);
        $arr=array_flip($arr);
        $arr=array_rand($arr,6);
        $res='';
        foreach ($arr as $v){
            $res.=$v;
    }
    return $res;
    }
    ?>
    

    3、编写调用核心组件程序:

    <?php
    
    //[*邮件发送逻辑处理过程*系统核心配置文件*]
    
    
    use PHPMailerPHPMailerPHPMailer;
    use PHPMailerPHPMailerException;
    
    //调用PHPMailer组件,此处是你自己的目录,需要改写。
    require '../PhpEmail/PHPMailer-master/src/Exception.php';
    require '../PhpEmail/PHPMailer-master/src/PHPMailer.php';
    require '../PhpEmail/PHPMailer-master/src/SMTP.php';
    
    $mail = new PHPMailer(true);       // Passing `true` enables exceptions
    try {
        //服务器配置
        $mail->CharSet ="UTF-8";                     //设定邮件编码
        $mail->SMTPDebug = 0;                        // 调试模式输出
        $mail->isSMTP();                             // 使用SMTP
        $mail->Host = '	smtp.qq.com';            // SMTP服务器
        $mail->SMTPAuth = true;                      // 允许 SMTP 认证
        $mail->Username = '**********';              // SMTP 用户名  即邮箱的用户名
        $mail->Password = '****************';        // SMTP 密码  部分邮箱是授权码(例如163邮箱)
        $mail->SMTPSecure = 'ssl';                    // 允许 TLS 或者ssl协议
        $mail->Port = 465;                            // 服务器端口 25 或者465 具体要看邮箱服务器支持
    
        $mail->setFrom('*********qq.com', 'Mailer');  //发件人(以QQ邮箱为例)
        
        $mail->addAddress($Email, 'Joe');  // 收件人($Email可以为变量传值,也可为固定值)
        //$mail->addAddress('ellen@example.com');  // 可添加多个收件人
        $mail->addReplyTo('*********@qq.com', 'info'); //回复的时候回复给哪个邮箱 建议和发件人一致
        //$mail->addCC('cc@example.com');                    //抄送
        //$mail->addBCC('bcc@example.com');                    //密送
    
        //发送附件
        // $mail->addAttachment('../xy.zip');         // 添加附件
        // $mail->addAttachment('../thumb-1.jpg', 'new.jpg');    // 发送附件并且重命名
        
        $yanzhen = codestr();  //此处为调用随机验证码函数(按照自己实际函数名改写)
    
        //Content
        $mail->isHTML(true);                                  // 是否以HTML文档格式发送  发送后客户端可直接显示对应HTML内容
        $mail->Subject = '******身份登录验证';
        $mail->Body    = '<h1>欢迎使用******</h1><h3>您的身份验证码是:<span>'.$yanzhen.'</span></h3>' . date('Y-m-d H:i:s');
        $mail->AltBody = '欢迎使用********,您的身份验证码是:'.$yanzhen . date('Y-m-d H:i:s');
    
        $mail->send();
        echo '验证邮件发送成功,请注意查收!';
    } catch (Exception $e) {
        echo '邮件发送失败: ', $mail->ErrorInfo;
    }
    
    }
    
    ?>
    

    完成以上三个步骤即可实现向用户发送邮箱验证码的功能。


    但是,事情并没有结束,向用户发送验证码成功后,对用户提交的验证码如何判断输入的验证码是否正确呢?如果正确,达到身份确认效果,否则反之。请看下面实例:

    写实例之前,为了让大家更加明确程序中的文件名以及变量的作用,我们先规定:

    1、将调用核心组件程序 命名为 email.php

    2、规定验证码存放的变量名为 $yanzhen

    3、将 用户输入的验证码 的post表单值命名为 YanEmail

    4、规定使用POST提交表单

    5、规定接收POST值的页面 命名为 yanzhen.php

    规定了以上规则后,下面开始实例演示:

    首先是用户输入页面:

    <!DOCTYPE HTML> 
    <html>
    <head>
    <meta charset="utf-8">
    <title>登录</title>
    <style>
    .error {color: #FF0000;}
    .tip {text-align:center; padding-top:10%}
    </style>
    </head>
    <body> 
    
    <div class="tip">
    
    <h2>邮箱验证页面</h2>
    
    <form method="post" action="yanzhen.php"> 
        <span><?php echo $Email;?></span></br>  //此处的$Email为接收用户的邮箱(这儿看自己需求,可以是数据库查询,也可以是手动输入,只需要最后赋值给$Email即可)
        <span class="error"><?php include 'email.php';?></span>  //此处为导入email.php文件,自动向用户发送验证邮箱
        <br><br>
        <input type="text" name="YanEmail" placeholder="请输入验证吗">  //此处为用户输入的验证码
        <input type="hidden" name="yanzhen" value="<?php echo $yanzhen;?>" >  //此处为系统向用户发送的验证码(注意:这样写对系统不安全,按照自己需求更改吧),
        <input type="submit" name="submit" value="验证">
    
    </form>
    </div>
    
    </body>
    </html>
    

      

    POST表单接收页面(yanzhen.php):

    <?php
    
    $yan = $_POST["YanEmail"];  //接受用户输入的验证码
    $zhen = $_POST["yanzhen"];  //接受系统发送的验证码(注意:此处不安全,需要自己修改)
    
    if ($yan === $zhen) {
        echo '邮箱验证成功';
        // code...
    } else {
        echo '邮箱验证失败';
        }
    
    ?>
    

      


    到这就完成了PHP实现邮箱验证码功能的实现。其实没啥技术含量,就是可能逻辑上需要理清自己想要什么功能。

    文章中如有错误,请留言指出,个人技术能力有限,希望可以帮到你。

    转载请注明来源!谢谢!!!

     

  • 相关阅读:
    C++考试篇二:继承与派生
    当初的愿望实现了么?
    Ckeditor 的使用
    2012 年取公积金
    CodeWarrior下载程序到9S12XS128
    [置顶] CentOS6.3三种安装方法(U盘,硬盘,光盘)
    重大改变!DotMSN于今天开放了源代码,并升级到2.0版本!!
    创建跨平台的Ajax应用
    创建跨平台的Ajax应用
    C#编写最小花时隐藏为任务栏图标的Window appllication
  • 原文地址:https://www.cnblogs.com/egsec/p/13246052.html
Copyright © 2011-2022 走看看