• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > PHP+Mysql+jQuery找回密码

PHP+Mysql+jQuery找回密码

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了PHP+Mysql,找回密码等相关知识,希望对您有所帮助

通常所说的密码找回功能不是真的能把忘记的密码找回,因为我们的密码是加密保存的,一般开发者会在验证用户信息后通过程序生成一个新密码或者生成一个特定的链接并发送邮件到用户邮箱,用户从邮箱链接到网站的重置密码模块重新设置新密码。


PHP+Mysql+jQuery找回密码


当然现在有的网站也有手机短信的方式找回密码,原理就是通过发送验证码来验明正身,和发送邮件验证一样,最终还是要通过重置密码来完成找回密码的流程。

实例下载:https://www.zztuku.com/logon-9222.html


本文将使用PHP+Mysql+jQuery来实现一个密码找回的功能,一般步骤是:

1.表单输入注册时的邮箱;

2.验证用户邮箱是否正确,如果用户邮箱不存在网站的用户表中,则提示用户邮箱未注册;

3.发送邮件,如果用户邮箱确实存在用户表中,则组合用于验证用户信息的字符串,并构造URL发送到用户邮箱中;

4.用户登录邮箱收取邮件,点击URL链接到网站验证程序;

5.网站程序通过用户请求的字符串查询本地用户表,比对用户信息是否正确;

6.如果正确则转到重置密码页面重新设置新密码,反之则提示用户验证无效。

HTML

我们在找回密码的页面上放置一个要求用户输入注册时所用的邮箱,然后提交前台js来处理交互。

<p><strong>输入您注册的电子邮箱,找回密码:</strong></p><p><input type="text" class="input" name="email" id="email"><span id="chkmsg"></span></p><p><input type="button" class="btn" id="sub_btn" value="提 交"></p>

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("<h3>"+msg+"</h3>");                }            });        }    });})

以上使用的jQuery代码很方便简洁的完成了前端交互操作,如果您有一定的jQuery基础,那上面的代码一目了然,不多解释。

当然别忘了在页面中加载jQuery库文件,有的同学经常问我说下载了demo怎么用不了,那80%是jquery或者其他文件加载路径错了导致没加载必要的文件。

PHP

sendmail.php需要验证Email是否存在系统用户表中,如果有,则读取用户信息,将用户id、用户名和密码惊醒md5加密生成一个特别的字符串作为找回密码的验证码,然后构造URL。同时我们为了控制URL链接的时效性,将记录用户提交找回密码动作的操作时间,最后调用邮件发送类发送邮件到用户邮箱,发送邮件类smtp.class.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.zztuku.com/resetpass/reset.php?email=".$email."&token=".$token;//构造URL    $time = date('Y-m-d H:i');    $result = sendmail($time,$email,$url);    if($result==1){//邮件发送成功        $msg = '系统已向您的邮箱发送了一封邮件<br/>请登录到您的邮箱及时重置您的密码!';        //更新数据发送时间        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.":<br/>您在".$time."提交了找回密码请求。请点击下面的链接重置密码(按钮24小时内有效)。<br/><a href='".$url."'target='_blank'>".$url."</a>";    $rs = $smtp->sendmail($smtpemailto, $smtpemailfrom, $emailsubject, $emailbody, $emailtype);    return $rs;}

好了,这个时候你的邮箱将会收到一封来自helloweba的密码找回邮件,邮件内容中有一个URL链接,点击该链接到 zztuku.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 = '请重新设置密码,显示重置密码表单,<br/>这里只是演示,略过。';        }    }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;


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • PHP+Mysql+jQuery找回密码
  • 怎样利用PHP+Mysql实现基本的增删改查功能?(实例详解)

相关文章

  • 2022-04-29PHP简短而安全的数组遍历
  • 2022-04-29帝国CMS后台密码忘了怎么办,找回密码的两种方法
  • 2022-04-29超酷的CSS3 loading预加载动画特效
  • 2022-04-29vue中query和params的区别是什么
  • 2022-04-29手把手教你使用Vue3实现图片散落效果
  • 2022-04-29苹果CMSV10播放器增加记忆+P2P播放+自动下一集功能
  • 2022-04-29Photoshop制作超逼真缝线效果
  • 2022-04-29js实现滑动进度条
  • 2022-04-29搜索引擎优化的文章营销策略
  • 2022-04-29帝国cms网站后台关键字自动同步TAG标签更新的方法

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • 解决WordPress评论加强:防止游客冒充站长回复别人的办法
    • Photoshop设计颗粒质感艺术字教程
    • 使用Vue实现移动端左滑删除效果
    • 浅析uni-app中设置导航栏和修改默认端口的方法
    • PhotoShop制作炫光抽象层次视觉效果文字教程
    • Elasticsearch工具cerebro的安装与使用教程
    • 一分钟解读js与PHP 设置cookie的相互读取(附代码)
    • 帝国CMS灵动标签显示标题属性、截取标题字数
    • 关键词组合的SEO优化策略
    • 网站上线前需要做的优化准备工作

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有