php通过邮箱找回密码,PHP邮件验证找回密码
内容转载自网络,如有侵权请留言。
话不多说直接上代码。
前台HTML+Jq操作:
输入您注册的电子邮箱,找回密码:
$(function(){
$("#sub_btn").click(function(){
var email = $("#email").val();
var preg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/; //匹配Email
if(email=='' || !preg.test(email)){
$("#chkmsg").html("请填写正确的邮箱!");
}else{
$("#sub_btn").attr("disabled","disabled").val('提交中..').css("cursor","default");
$.post("sendmail.php",{mail:email},function(msg){
if(msg=="noreg"){
$("#chkmsg").html("该邮箱尚未注册!");
$("#sub_btn").removeAttr("disabled").val('提 交').css("cursor","pointer");
}else{
$(".demo").html("
"+msg+"
");
}
});
}
});
})
sendmail.php需要验证Email是否存在系统用户表中,如果有,则读取用户信息,将用户id、用户名和密码惊醒md5加密生成一个特别的字符串作为找回密码的验证码,然后构造URL。同时我们为了控制URL链接的时效性,将记录用户提交找回密码动作的操作时间,最后调用邮件发送类发送邮件到用户邮箱,发送邮件类smtp.class.php已经打包好,请下载。
PHP代码:
include_once("connect.php");//连接数据库
$email = stripslashes(trim($_POST['mail']));
$sql = "select id,username,password from `t_user` where `email`='$email'";
$query = mysql_query($sql);
$num = mysql_num_rows($query);
if($num==0){//该邮箱尚未注册!
echo 'noreg';
exit;
}else{
$row = mysql_fetch_array($query);
$getpasstime = time();
$uid = $row['id'];
$token = md5($uid.$row['username'].$row['password']);//组合验证码
$url = "http://www.daimajiayuan.com/demo/resetpass/reset.php?email=".$email."
&token=".$token;//构造URL
$time = date('Y-m-d H:i');
$result = sendmail($time,$email,$url);
if($result==1){//邮件发送成功
$msg = '系统已向您的邮箱发送了一封邮件
请登录到您的邮箱及时重置您的密码!';
//更新数据发送时间
mysql_query("update `t_user` set `getpasstime`='$getpasstime' where id='$uid '");
}else{
$msg = $result;
}
echo $msg;
}
//发送邮件
function sendmail($time,$email,$url){
include_once("smtp.class.php");
$smtpserver = ""; //SMTP服务器,如smtp.163.com
$smtpserverport = 25; //SMTP服务器端口
$smtpusermail = ""; //SMTP服务器的用户邮箱
$smtpuser = ""; //SMTP服务器的用户帐号
$smtppass = ""; //SMTP服务器的用户密码
$smtp = new Smtp($smtpserver, $smtpserverport, true, $smtpuser, $smtppass);
//这里面的一个true是表示使用身份验证,否则不使用身份验证.
$emailtype = "HTML"; //信件类型,文本:text;网页:HTML
$smtpemailto = $email;
$smtpemailfrom = $smtpusermail;
$emailsubject = "Helloweba.com - 找回密码";
$emailbody = "亲爱的".$email.":
您在".$time."提交了找回密码请求。请点击下面的链接重置密码
(按钮24小时内有效)。".$url."";
$rs = $smtp->sendmail($smtpemailto, $smtpemailfrom, $emailsubject, $emailbody, $emailtype);
return $rs;
}
好了,这个时候你的邮箱将会收到一封来自www.URL.com的密码找回邮件,邮件内容中有一个URL链接,点击该链接到www.URL.com的reset.php来验证邮箱。
include_once("connect.php");//连接数据库
$token = stripslashes(trim($_GET['token']));
$email = stripslashes(trim($_GET['email']));
$sql = "select * from `t_user` where email='$email'";
$query = mysql_query($sql);
$row = mysql_fetch_array($query);
if($row){
$mt = md5($row['id'].$row['username'].$row['password']);
if($mt==$token){
if(time()-$row['getpasstime']>24*60*60){
$msg = '该链接已过期!';
}else{
//重置密码...
$msg = '请重新设置密码,显示重置密码表单,
这里只是演示,略过。';
}
}else{
$msg = '无效的链接';
}
}else{
$msg = '错误的链接!';
}
echo $msg;
reset.php首先接受参数email和token,然后根据email查询数据表t_user中是否存在该Email,如果存在则获取该用户的信息,并且和sendmail.php中的token组合方式一样构建token值,然后与url传过来的token进行对比,如果当前时间与发送邮件时的时间相差超过24小时的,则提示“该链接已过期!”,反之,则说明链接有效,并且调转到重置密码页面,最后就是用户自己设置新密码了。
小结:通过注册邮箱验证与本文邮件找回密码,我们知道发送邮件在网站开发中的应用以及它的重要性,当然,现在也流行短信验证应用,这个需要相关的短信接口对接就可以了。
最后,附上数据表t_user结构:
CREATE TABLE `t_user` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(30) NOT NULL,
`password` varchar(32) NOT NULL,
`email` varchar(50) NOT NULL,
`getpasstime` int(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
php通过邮箱找回密码,PHP邮件验证找回密码相关推荐
- php密码重复,AngularJs验证重复密码的方法(两种)
本文给大家分享angularjs验证重复密码的两种方法.具体方法详情如下所示: 第一种:密码 重复密码 两次密码不一致 /*JS*/ app.controller("main",f ...
- oracle密码错误延迟验证,oracle密码错误验证延迟
补充从10g升级到11g之后需要注意的几个密码方面问题: 1. 11g默认开始密码区分大小写,可以通过把参数设置为SEC_CASE_SENSITIVE_LOGON =FALSE 屏蔽 2. 11g密码 ...
- 查看本地oracle密码,Oracle 本地验证和密码文件
实验: oracle服务器位于Linux操作系统,客户端位于windows操作系统. 首先,查看remote_login_passwordfile参数值: SYS@orcl 11-SEP-14> ...
- java邮箱找回密码_java实现邮箱找回密码 简单邮件
首先 发件人的POP/SMTP服务要打开 发件人的密码为服务的授权码 js方法 //找回密码 function send(){ var lostemail = $("#lostemail ...
- 邮箱验证修改密码,通过邮箱找回密码
使用邮箱验证修改密码,在这里我是使用163免费邮进行测试 前台代码 1 <input type="text" name="Mail" id="M ...
- php使用邮件找回密码,php利用Zend_Mail发送邮件(实现邮件重设密码功能)
[php]代码库<?php include_once 'conn/conn.php'; require_once 'Zend/Mail.php';//调用发送邮件的文件 require_once ...
- python 发邮件 无需密码_Django实现发送邮件找回密码功能
在各大网站上,一定都遇到过找回密码的问题,通常采用的方式是通过发送带有验证码的邮件进行身份验证,本文将介绍通过Django实现邮件找回密码功能. 找回密码流程 功能流程: 1.首先在用户登录界面,添加 ...
- 苹果邮箱(@icloud.com):双重验证+专用密码登录
苹果邮箱(@icloud.com)是苹果公司(apple.com.cn)旗下的邮箱产品,依托于苹果公司提供的iCloud云端服务,可与Apple ID绑定. 出于安全因素的考虑,苹果公司限制了邮箱密码 ...
- mysql1.8找回密码_PHP+Mysql+jQuery找回密码
通常所说的密码找回功能不是真的能把忘记的密码找回,因为我们的密码是加密保存的,一般开发者会在验证用户信息后通过程序生成一个新密码或者生成一个特定的链接并发送邮件到用户邮箱,用户从邮箱链接到网站的重置密 ...
最新文章
- MongoDB之bson的介绍
- 修改可选项文件实现自动连接数据库服务器
- 解决阿里云postfix无法发送邮件问题
- 数据库有哪些设计技巧
- java 多线程并容器实现_跟着实例学习java多线程9-并发容器
- python登录跳转_Python模拟登录和登录跳转的参考示例
- 安装虚拟机工具 linux虚拟机访问windows文件夹
- js 实现php md5加密,js实现md5加密插件代码分享
- report 和report on的区别
- 给网页添加背景图片 html+css
- 易基因|表观发育:ChIP-seq揭示精子H3K4me3可传递到胚胎并与代谢功能障碍遗传有关
- 闲聊机器人实例一:python实现小姜机器人chatbot_xiaojiang聊天(概述)
- @Retryable @Backoff @Recover 重试注解的使用
- opencv 手指位置检测
- 这4个兼职平台实测靠谱,想做兼职的赶紧收藏起来看看吧
- cacheable注解原理_@Cacheable的实现原理
- C# CAD操作之定位实体位置(视图操作缩放)
- (总结)什么是HTML语义化
- 判别模型:logistic,GDA,QDA(一)
- css基础语法与注释,简述CSS注释