PHP实现邮箱验证码验证功能
*本文将主要说明: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 PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; //调用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实现邮箱验证码功能的实现。其实没啥技术含量,就是可能逻辑上需要理清自己想要什么功能。
文章中如有错误,请留言指出,个人技术能力有限,希望可以帮到你。
转载请注明来源!谢谢!!!