php实现忘记密码找回功能的方法:1、用户注册时需要提供一个e-mail邮箱;2、打开表单并输入注册用的e-mail邮箱;3、从数据库中查找到该用户信息,并更新该用户的密码为一个临时密码;4、借助jmail功能实现修改密码即可。
推荐:《php视频教程》
php会员找回密码功能的简单实现
设置思路
1、用户注册时需要提供一个e-mail邮箱,目的就是用该邮箱找回密码。
2、当用户忘记密码或用户名时,点击登录页面的“找回密码”超链接,打开表单,并输入注册用的e-mail邮箱,提交。
3、系统通过该邮箱,从数据库中查找到该用户信息,并更新该用户的密码为一个临时密码(比如:12345678)。
4、系统借助jmail功能把该用户的信息发送到该用户的邮箱中(内容包括:用户名、临时密码、提醒用户及时修改临时密码的提示语)。
5、用户用临时密码即可登录。
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="http://www.bitscn.com/pdb/php/201609/提 交"></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%%u662fjquery或者其他文件加载路径错了导致没加载必要的文件。
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 = "/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 = '系統已向您的郵箱發送了一封郵件<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 = "www.bitscn.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链接,点击该链接到reset.php来验证邮
word修改痕迹怎么去掉 word去除修订痕迹具体步骤疫情期百度云服务器扩容情况网站伪静态没反应-虚拟主机/数据库问题阿里云服务器安保收费标准网站公安备案的流程有哪些?云服务器 价格腾讯云服务器怎么备份整个系统营销新方式 微电商推出游戏营销