PHP结合jQuery实现找回密码
通常所说的密码找回功能不是真的能把忘记的密码找回,因为我们的密码是加密保存的,一般开发者会在验证用户信息后通过程序生成一个新密码或者生成一个特定的链接并发送邮件到用户邮箱,用户从邮箱链接到网站的重置密码模块重新设置新密码。 当然现在有的网站也有手机短信的方式找回密码,原理就是通过发送验证码来验明正身,和发送邮件验证一样,最终还是要通过重置密码来完成找回密码的流程。 一般步骤是: 1.表单输入注册时的邮箱; 2.验证用户邮箱是否正确,如果用户邮箱不存在网站的用户表中,则提示用户邮箱未注册; 3.发送邮件,如果用户邮箱确实存在用户表中,则组合用于验证用户信息的字符串,并构造URL发送到用户邮箱中; 4.用户登录邮箱收取邮件,点击URL链接到网站验证程序; 5.网站程序通过用户请求的字符串查询本地用户表,比对用户信息是否正确; 6.如果正确则转到重置密码页面重新设置新密码,反之则提示用户验证无效。 HTML我们在找回密码的页面上放置一个要求用户输入注册时所用的邮箱,然后提交前台js来处理交互。 输入您注册的电子邮箱,找回密码:
jQuery当用户输入完邮箱并点击提交后,jQuery先验证邮箱格式是否正确,如果正确则通过向后台sendmail.php发送Ajax请求,sendmail.php负责验证邮箱是否存在和发送邮件,并会返回相应的处理结果给前台页面,请看jQuery代码: $(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+"");} }); } }); }) 以上使用的jQuery代码很方便简洁的完成了前端交互操作,如果您有一定的jQuery基础,那上面的代码一目了然,不多解释。 当然别忘了在页面中加载jQuery库文件,有的同学经常问我说从52php.cn下载了demo怎么用不了,那80%是jquery或者其他文件加载路径错了导致没加载必要的文件。 PHPsendmail.php需要验证Email是否存在系统用户表中,如果有,则读取用户信息,将用户id、用户名和密码惊醒md5加密生成一个特别的字符串作为找回密码的验证码,然后构造URL。同时我们为了控制URL链接的时效性,将记录用户提交找回密码动作的操作时间,最后调用邮件发送类发送邮件到用户邮箱,发送邮件类smtp.class.php已经打包好,请下载。 include_once("connect.php");//连接数据库
$email = stripslashes(trim($_POST['mail'])); $sql = "select id,username,password from //发送邮件 return $rs; 好了,这个时候你的邮箱将会收到一封来自helloweba的密码找回邮件,邮件内容中有一个URL链接,点击该链接到52php.cn的reset.php来验证邮箱。 include_once("connect.php");//连接数据库
$token = stripslashes(trim($_GET['token'])); $query = mysql_query($sql); 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; 以上所述就是本文的全部内容了,希望大家能够喜欢。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |