*文章来源: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实现 蓝桥杯 历届真题 数字拆分

    正整数可以表示为若干正整数的累加和. 如,对于正整数n=6,可以分划为: 5+1 4+2 4+1+1 3+3 3+2+1 3+1+1+1 2+2+2 2+2+1+1 2+1+1+1+1 1+1+1+1 ...

  2. 第五届蓝桥杯C++B组国(决)赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.年龄巧合 小明和他的表弟一起去看电影,有人问他们的年龄.小明说:今年是我们的幸运年啊.我出生年份的四位数字加起来刚好是我的年龄.表弟的 ...

  3. Java实现填写乘法算式

    观察下面的算式: * * × * * = * * * 它表示:两个两位数字相乘,结果是3位数.其中的星号(*)代表任意的数字,可以相同,也可以不同,只要不是在首位的就可以是0.当然,满足这个要求的算式 ...

  4. Python中的三种等待时间

    一.强制等待 不论页面是否加载完成,都要等待指定时间才能执行下一步,  单位秒,time.sleep(5) import time time.sleep(10) # 强制等待10秒时间 二.隐式等待( ...

  5. 【整理】JVM知识点大梳理

    JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的.引入Java语 ...

  6. github常用的协同开发流程

    github的实用之处 对于刚刚工作的小白来说,顺利完成工作任务是首要考虑的事情,业余时间多了解了解其他的技术将有利于自己对该领域的熟悉,比如我们都拥有的github,除了在网站里查看优秀的代码,其还 ...

  7. 小程序 大转盘 抽奖 canvas animation

    项目需求运用到大转盘 可设置概率 可直接自定义结果 效果如下

  8. jar 反编译工具

    luyten windows版本的 链接:https://pan.baidu.com/s/1hp6gyvJSj_4h60dk5AZejA 密码:c4u7 之所以推荐它,是因为它能避免普通的编译工具jd ...

  9. Docker+Selenium+TestNG+Maven+Jenkins环境搭建

    一.Selenium环境准备 standalone-chrome Docker容器启动: docker pull selenium/standalone-chrome version: '3' ser ...

  10. Sublime Text 3.1 注册码

    加入到hosts文件: 127.0.0.1 www.sublimetext.com 127.0.0.1 license.sublimehq.com hosts 文件的位置: Windows : c:/ ...