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 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实现邮箱验证码验证功能的更多相关文章
- PHP网站提交表单如何实现验证码验证功能
很多小伙伴在原生网站时候都会遇到很多意料之外的情况发生,也有不少小伙伴在初学程序代码的时候可能会因为一个小小的逗号隐藏在几百行,几千行的代码中出错常见的在提交表单中很多事需要验证码验证,那么如何来实现 ...
- Ajax+Struts2实现验证码验证功能
---------------------------------------------------------------------------------------------------- ...
- JavaWeb学习记录(六)——用户登录功能之Session与验证码验证功能的实现
一.产生验证码的工具类 package blank.util; import java.awt.Color;import java.awt.Graphics;import java.awt.image ...
- [phpcms v9]自定义表单添加验证码验证功能
修改 \phpcms\templates\default\formguide\show.html 中添加验证码显示 <input type="text" id=" ...
- 本博文将一步步带领你实现抽屉官网的各种功能:包括登陆、注册、发送邮箱验证码、登陆验证码、页面登陆验证、发布文章、上传图片、form验证、点赞、评论、文章分页处理以及基于tronado的后端和ajax的前端数据处理。
本博文将一步步带领你实现抽屉官网的各种功能:包括登陆.注册.发送邮箱验证码.登陆验证码.页面登陆验证.发布文章.上传图片.form验证.点赞.评论.文章分页处理以及基于tronado的后端和ajax的 ...
- tornado web高级开发项目之抽屉官网的页面登陆验证、form验证、点赞、评论、文章分页处理、发送邮箱验证码、登陆验证码、注册、发布文章、上传图片
本博文将一步步带领你实现抽屉官网的各种功能:包括登陆.注册.发送邮箱验证码.登陆验证码.页面登陆验证.发布文章.上传图片.form验证.点赞.评论.文章分页处理以及基于tornado的后端和ajax的 ...
- javamail实现邮箱验证功能
javamail是基于SMTP协议和POP3协议的邮件发送与接收系统,在用户注册与登陆的过程中,常需要用到邮箱验证功能,下面是基于javamail的一个简单实现 用户注册后通过servlet得到邮箱地 ...
- discuz3.2x增加邮箱验证功能
为防止垃圾用户多次注册,为disczu增加邮箱验证功能. 大致分为二步: 1.申请邮箱,这里推荐使用腾讯免费企业邮箱:https://exmail.qq.com/portal/introducefre ...
- Java实现发送邮箱验证码/注册验证链接
本文以163邮箱为例 1.准备(邮箱账号,邮箱必须设置POP3/SMTP/IMAP,设置步骤如下:) >>步骤:1 开启授权码服务 >>步骤:2 手机获取验证码 >> ...
随机推荐
- Java实现 洛谷 P1208 [USACO1.3]混合牛奶 Mixing Milk
输入输出样例 输入 #1 100 5 5 20 9 40 3 10 8 80 6 30 输出 #1 630 import java.util.Arrays; import java.util.Scan ...
- Java实现第八届蓝桥杯方格分割
方格分割 题目描述 6x6的方格,沿着格子的边线剪开成两部分. 要求这两部分的形状完全相同. 如图:p1.png, p2.png, p3.png 就是可行的分割法. 试计算: 包括这3种分法在内,一共 ...
- MySQL进阶篇(02):索引体系划分,B-Tree结构说明
本文源码:GitHub·点这里 || GitEE·点这里 一.索引简介 1.基本概念 首先要明确索引是什么:索引是一种数据结构,数据结构是计算机存储.组织数据的方式,是指相互之间存在一种或多种特定关系 ...
- web静态页面资源访问路径问题
我使用的是idea,今天搭建一个项目时遇见了css和js路径错误,导致浏览器获取不到资源路径 这是我最开始写的路径 <link href="/main/loginMain.css&qu ...
- 20184302 2019-2020-2 《Python程序设计》实验四报告
20184302 2019-2020-2 <Python程序设计>实验四报告 课程:<Python程序设计> 班级: 1843 姓名: 李新锐 学号:184302 实验教师:王 ...
- ubuntu安装qt步骤(源码)
1.安装gcc,g++ sudo apt-get install gcc sudo apt-get install g++ 2.解压源码包 tar xvzf qt-xxxx 3.安装xlib库 sud ...
- 记录一次更改服务器名称导致mysql 不能正常登录、启动
由于客户要求更改服务器的名称,以便区分多台服务器:修改前mysql 能正常登录,但是修改后,登录时报错: Enter password: ERROR 1524 (HY000): Plugin '*C6 ...
- linux安装syncthing
https://blog.csdn.net/weixin_30527551/article/details/98882344 https://syncthing.net/downloads/ http ...
- C#数据结构与算法系列(六):链表——双链表(Double-LinkedList)
1.对比单向链表 单向链表查找的方向只能是一个方向,而双向链表可以向前或者向后查找 单向链表不能自我删除,需要靠辅助节点,而双向链表可以自我删除 对于单向链表的删除,我们首先要找到单向链表待删除节点的 ...
- 《Redis开发与运维》
第1章 初识Redis 1. Redis介绍: Redis是一种基于键值对(key-value)的NoSQL数据库. 与很多键值对数据库不同的是,Redis中的值可以是由string(字符串).has ...