*文章来源: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 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实现邮箱验证码功能的实现。其实没啥技术含量,就是可能逻辑上需要理清自己想要什么功能。

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

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

PHP实现邮箱验证码验证功能的更多相关文章

  1. PHP网站提交表单如何实现验证码验证功能

    很多小伙伴在原生网站时候都会遇到很多意料之外的情况发生,也有不少小伙伴在初学程序代码的时候可能会因为一个小小的逗号隐藏在几百行,几千行的代码中出错常见的在提交表单中很多事需要验证码验证,那么如何来实现 ...

  2. Ajax+Struts2实现验证码验证功能

    ---------------------------------------------------------------------------------------------------- ...

  3. JavaWeb学习记录(六)——用户登录功能之Session与验证码验证功能的实现

    一.产生验证码的工具类 package blank.util; import java.awt.Color;import java.awt.Graphics;import java.awt.image ...

  4. [phpcms v9]自定义表单添加验证码验证功能

    修改  \phpcms\templates\default\formguide\show.html 中添加验证码显示 <input type="text" id=" ...

  5. 本博文将一步步带领你实现抽屉官网的各种功能:包括登陆、注册、发送邮箱验证码、登陆验证码、页面登陆验证、发布文章、上传图片、form验证、点赞、评论、文章分页处理以及基于tronado的后端和ajax的前端数据处理。

    本博文将一步步带领你实现抽屉官网的各种功能:包括登陆.注册.发送邮箱验证码.登陆验证码.页面登陆验证.发布文章.上传图片.form验证.点赞.评论.文章分页处理以及基于tronado的后端和ajax的 ...

  6. tornado web高级开发项目之抽屉官网的页面登陆验证、form验证、点赞、评论、文章分页处理、发送邮箱验证码、登陆验证码、注册、发布文章、上传图片

    本博文将一步步带领你实现抽屉官网的各种功能:包括登陆.注册.发送邮箱验证码.登陆验证码.页面登陆验证.发布文章.上传图片.form验证.点赞.评论.文章分页处理以及基于tornado的后端和ajax的 ...

  7. javamail实现邮箱验证功能

    javamail是基于SMTP协议和POP3协议的邮件发送与接收系统,在用户注册与登陆的过程中,常需要用到邮箱验证功能,下面是基于javamail的一个简单实现 用户注册后通过servlet得到邮箱地 ...

  8. discuz3.2x增加邮箱验证功能

    为防止垃圾用户多次注册,为disczu增加邮箱验证功能. 大致分为二步: 1.申请邮箱,这里推荐使用腾讯免费企业邮箱:https://exmail.qq.com/portal/introducefre ...

  9. Java实现发送邮箱验证码/注册验证链接

    本文以163邮箱为例 1.准备(邮箱账号,邮箱必须设置POP3/SMTP/IMAP,设置步骤如下:) >>步骤:1 开启授权码服务 >>步骤:2 手机获取验证码 >> ...

随机推荐

  1. Java实现迷宫城堡(强连通图的判定)

    1 问题描述 Problem Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单 ...

  2. java实现第四届蓝桥杯逆波兰表达式

    逆波兰表达式 正常的表达式称为中缀表达式,运算符在中间,主要是给人阅读的,机器求解并不方便. 例如:3 + 5 * (2 + 6) - 1 而且,常常需要用括号来改变运算次序. 相反,如果使用逆波兰表 ...

  3. (十)DVWA之SQL Injection--测试分析(Impossible)

    DVWA之SQL Injection--测试分析(Impossible) 防御级别为Impossible的后端代码:impossible.php <?php if( isset( $_GET[ ...

  4. Java培训Day02——制作疫情地图(一)

    一.前言 此次培训,是为期三天的网上培训.最终的目的是制作出疫情地图.首先我们来看看主要的讲课内容大纲. Day1 |-Java语法学习(个人感觉讲得还可以,主要围绕本次培训作出的讲解,没有像网上的基 ...

  5. ASP.NET Core通过Nacos SDK读取阿里云ACM

    背景 前段时间,cranelee 在Github上给老黄提了个issues, 问到了如何用Nacos的SDK访问阿里云ACM. https://github.com/catcherwong/nacos ...

  6. 恕我直言,我怀疑你并不会用 Java 枚举

    开门见山地说吧,enum(枚举)是 Java 1.5 时引入的关键字,它表示一种特殊类型的类,默认继承自 java.lang.Enum. 为了证明这一点,我们来新建一个枚举 PlayerType: p ...

  7. JDK8在泛型类型推导上的变化

    概述 JDK8升级,大部分问题可能在编译期就碰到了,但是有些时候比较蛋疼,编译期没有出现问题,但是在运行期就出了问题,比如今天要说的这个话题,所以大家再升级的时候还是要多测测再上线,当然JDK8给我们 ...

  8. @font-face规则指定字体

    兼容性写法: @font-face { font-family: '字体名'; src: url('字体名.eot'); /* IE9 兼容模式 */ src: url('字体名.eot?#iefix ...

  9. 恕我直言你可能真的不会java第3篇:Stream的Filter与谓词逻辑

    一.基础代码准备 建立一个实体类,该实体类有五个属性.下面的代码使用了lombok的注解Data.AllArgsConstructor,这样我们就不用写get.set方法和全参构造函数了.lombok ...

  10. 基于 abp vNext 和 .NET Core 开发博客项目 - Blazor 实战系列(九)

    系列文章 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目 基于 abp vNext 和 .NET Core 开发博客项目 - 给项目瘦身,让它跑起来 ...