Php怎样实现通过邮箱找回密码,PHP如何使用邮箱找回密码?

445667839add1953076ca21eace157eb.png

在日常开发过程中,我们会经常遇到用邮箱找回密码,今天就给大家讲解一下。

一、设置思路

1、用户注册时需要提供一个 email 邮箱,目的就是用该邮箱找回密码。

2、当用户忘记密码或用户名时,点击登录页面的“找回密码”超链接,打开表单,并输入注册用的 email 邮箱,提交。

3、系统通过该邮箱,从数据库中查找到该用户信息,并更新该用户的密码为一个临时密码(比如:123456)。

4、系统借助 PHPMailer 类库把该用户的信息发送到该用户的邮箱中(内容包括:用户名、临时密码、提醒用户及时修改临时密码的提示语)。

5、用户用临时密码即可登录。

二、HTML页面

在找回密码的页面上放置一个要求用户输入注册时所用的邮箱,然后提交,由 js 来完成和后台的交互。

代码如下

输入您注册的电子邮箱,找回密码:

三、jQuery请求与交互

当用户输入完邮箱并点击提交后,js 先验证邮箱格式是否正确,若正确则向 sendemail.php 发送 Ajax 请求,sendemail.php 会验证邮箱是否存在和发送邮件,并将相应的处理结果返回给前台页面,并在页面展示其结果。

js 代码如下

$(function(){$("#sub_btn").click(function(){var email = $("#email").val();//匹配emailvar preg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;if(email=='' || !preg.test(email)){$("#chkmsg").html("请填写正确的邮箱!");}else{$.post("sendemail.php",{mail:email},function(msg){if(msg=="no"){$("#chkmsg").html("该邮箱尚未注册!");$("#sub_btn").removeAttr("disabled").val('提 交').css("cursor","pointer");}else{$("#sucmsg").html(""+msg+"");}});}});})

注意:要在页面中加载JQuery库文件,否则无法使用。

四、PHP 文件

1、sendemail.php 需要验证 Email 是否存在系统用户表中,如果有,则读取用户信息,将用户id、用户名和密码进行 md5 加密后生成一个字符串作为找回密码的token,之后构造URL。

同时我们为了控制URL链接的时效性,将记录用户提交找回密码的时间,最后调用邮件发送方法发送邮件到用户邮箱,发送邮件方法 smtp.func.php 已经打包好。代码如下:

d19690e9a9169a758f4eaa10f764dde3.png

点击提交之后,你的邮箱将会收到一封的密码找回邮件,邮件内容中有一个URL链接,点击该链接到 reset.php 来验证邮箱。

reset.php 代码:

ad56500e22c4054e7704728ee8969602.png

reset.php 首先接受两个参数 email和token,然后根据 email 查询数据表 t_user 中是否存在该 email。

若 email 存在则获取该用户的信息,并且和 sendmail.php 中的 token 组合方式一样生成 token 值,然后再与 url 传过来的 token 进行对比,若token值不相同,则提示“该链接无效,token值错误!”;若当前时间与发送邮件时的时间相差超过24小时,则提示“该链接已超时!”。

反之,则说明链接有效,并且调转到重置密码页面,这时用户就可以自己设置新密码了。

最后,附上数据表t_user结构:

CREATE TABLE `t_user` (`user_id` int(11) unsigned NOT NULL AUTO_INCREMENT,`username` varchar(255) NOT NULL COMMENT '用户名',`password` varchar(255) NOT NULL COMMENT '用户密码',`email` varchar(255) NOT NULL COMMENT '邮箱',`resettime` int(11) DEFAULT NULL COMMENT '重置密码的时间',PRIMARY KEY (`user_id`)) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

smtp.class.php文件

75f6eeac95810139ccc3b3f9f123f16c.png

PHP使用PHPMailer发送邮件

如何使用PHPExcel实现Excel文件的导出?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值