麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > PHP > 正文

PHP結(jié)合jQuery實(shí)現(xiàn)找回密碼

2024-05-04 23:38:00
字體:
供稿:網(wǎng)友

本文將使用PHP+Mysql+jQuery來實(shí)現(xiàn)一個(gè)密碼找回的功能,分享給大家思路和具體的代碼,有需要的小伙伴可以參考下。

通常所說的密碼找回功能不是真的能把忘記的密碼找回,因?yàn)槲覀兊拿艽a是加密保存的,一般開發(fā)者會(huì)在驗(yàn)證用戶信息后通過程序生成一個(gè)新密碼或者生成一個(gè)特定的鏈接并發(fā)送郵件到用戶郵箱,用戶從郵箱鏈接到網(wǎng)站的重置密碼模塊重新設(shè)置新密碼。

當(dāng)然現(xiàn)在有的網(wǎng)站也有手機(jī)短信的方式找回密碼,原理就是通過發(fā)送驗(yàn)證碼來驗(yàn)明正身,和發(fā)送郵件驗(yàn)證一樣,最終還是要通過重置密碼來完成找回密碼的流程。

一般步驟是:

1.表單輸入注冊(cè)時(shí)的郵箱;

2.驗(yàn)證用戶郵箱是否正確,如果用戶郵箱不存在網(wǎng)站的用戶表中,則提示用戶郵箱未注冊(cè);

3.發(fā)送郵件,如果用戶郵箱確實(shí)存在用戶表中,則組合用于驗(yàn)證用戶信息的字符串,并構(gòu)造URL發(fā)送到用戶郵箱中;

4.用戶登錄郵箱收取郵件,點(diǎn)擊URL鏈接到網(wǎng)站驗(yàn)證程序;

5.網(wǎng)站程序通過用戶請(qǐng)求的字符串查詢本地用戶表,比對(duì)用戶信息是否正確;

6.如果正確則轉(zhuǎn)到重置密碼頁面重新設(shè)置新密碼,反之則提示用戶驗(yàn)證無效。

HTML

我們?cè)谡一孛艽a的頁面上放置一個(gè)要求用戶輸入注冊(cè)時(shí)所用的郵箱,然后提交前臺(tái)js來處理交互。

 

 
  1. <p><strong>輸入您注冊(cè)的電子郵箱,找回密碼:</strong></p>  
  2. <p><input type="text" class="input" name="email" id="email"><span id="chkmsg"></span></p>  
  3. <p><input type="button" class="btn" id="sub_btn" value="提 交"></p>  

jQuery

當(dāng)用戶輸入完郵箱并點(diǎn)擊提交后,jQuery先驗(yàn)證郵箱格式是否正確,如果正確則通過向后臺(tái)sendmail.php發(fā)送Ajax請(qǐng)求,sendmail.php負(fù)責(zé)驗(yàn)證郵箱是否存在和發(fā)送郵件,并會(huì)返回相應(yīng)的處理結(jié)果給前臺(tái)頁面,請(qǐng)看jQuery代碼:

 

 
  1. $(function(){  
  2. $("#sub_btn").click(function(){  
  3. var email = $("#email").val();  
  4. var preg = /^/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*/; //匹配Email  
  5. if(email=='' || !preg.test(email)){  
  6. $("#chkmsg").html("請(qǐng)?zhí)顚懻_的郵箱!");  
  7. }else{  
  8. $("#sub_btn").attr("disabled","disabled").val('提交中..').css("cursor","default");  
  9. $.post("sendmail.php",{mail:email},function(msg){  
  10. if(msg=="noreg"){  
  11. $("#chkmsg").html("該郵箱尚未注冊(cè)!");  
  12. $("#sub_btn").removeAttr("disabled").val('提 交').css("cursor","pointer");  
  13. }else{  
  14. $(".demo").html("<h3>"+msg+"</h3>");  
  15. }  
  16. });  
  17. }  
  18. });  
  19. })  

以上使用的jQuery代碼很方便簡(jiǎn)潔的完成了前端交互操作,如果您有一定的jQuery基礎(chǔ),那上面的代碼一目了然,不多解釋。

當(dāng)然別忘了在頁面中加載jQuery庫文件,有的同學(xué)經(jīng)常問我說從vevb.com下載了demo怎么用不了,那80%是jquery或者其他文件加載路徑錯(cuò)了導(dǎo)致沒加載必要的文件。

PHP

sendmail.php需要驗(yàn)證Email是否存在系統(tǒng)用戶表中,如果有,則讀取用戶信息,將用戶id、用戶名和密碼驚醒md5加密生成一個(gè)特別的字符串作為找回密碼的驗(yàn)證碼,然后構(gòu)造URL。同時(shí)我們?yōu)榱丝刂芔RL鏈接的時(shí)效性,將記錄用戶提交找回密碼動(dòng)作的操作時(shí)間,最后調(diào)用郵件發(fā)送類發(fā)送郵件到用戶郵箱,發(fā)送郵件類smtp.class.php已經(jīng)打包好,請(qǐng)下載。

 

 
  1. include_once("connect.php");//連接數(shù)據(jù)庫  
  2.  
  3. $email = stripslashes(trim($_POST['mail']));  
  4.  
  5. $sql = "select id,username,password from `t_user` where `email`='$email'";  
  6. $query = mysql_query($sql);  
  7. $num = mysql_num_rows($query);  
  8. if($num==0){//該郵箱尚未注冊(cè)!  
  9. echo 'noreg';  
  10. exit;  
  11. }else{  
  12. $row = mysql_fetch_array($query);  
  13. $getpasstime = time();  
  14. $uid = $row['id'];  
  15. $token = md5($uid.$row['username'].$row['password']);//組合驗(yàn)證碼  
  16. $url = "http://www.companysz.com/demo/resetpass/reset.php?email=".$email."  
  17. &token=".$token;//構(gòu)造URL  
  18. $time = date('Y-m-d H:i');  
  19. $result = sendmail($time,$email,$url);  
  20. if($result==1){//郵件發(fā)送成功  
  21. $msg = '系統(tǒng)已向您的郵箱發(fā)送了一封郵件<br/>請(qǐng)登錄到您的郵箱及時(shí)重置您的密碼!';  
  22. //更新數(shù)據(jù)發(fā)送時(shí)間  
  23. mysql_query("update `t_user` set `getpasstime`='$getpasstime' where id='$uid '");  
  24. }else{  
  25. $msg = $result;  
  26. }  
  27. echo $msg;  
  28. }  
  29.  
  30. //發(fā)送郵件  
  31. function sendmail($time,$email,$url){  
  32. include_once("smtp.class.php");  
  33. $smtpserver = ""//SMTP服務(wù)器,如smtp.163.com  
  34. $smtpserverport = 25; //SMTP服務(wù)器端口  
  35. $smtpusermail = ""//SMTP服務(wù)器的用戶郵箱  
  36. $smtpuser = ""//SMTP服務(wù)器的用戶帳號(hào)  
  37. $smtppass = ""//SMTP服務(wù)器的用戶密碼  
  38. $smtp = new Smtp($smtpserver, $smtpserverport, true, $smtpuser, $smtppass);  
  39. //這里面的一個(gè)true是表示使用身份驗(yàn)證,否則不使用身份驗(yàn)證.  
  40. $emailtype = "HTML"//信件類型,文本:text;網(wǎng)頁:HTML  
  41. $smtpemailto = $email;  
  42. $smtpemailfrom = $smtpusermail;  
  43. $emailsubject = "vevb.com - 找回密碼";  
  44. $emailbody = "親愛的".$email.":<br/>您在".$time."提交了找回密碼請(qǐng)求。請(qǐng)點(diǎn)擊下面的鏈接重置密碼  
  45. (按鈕24小時(shí)內(nèi)有效)。<br/><a href='".$url."'target='_blank'>".$url."</a>";  
  46. $rs = $smtp->sendmail($smtpemailto, $smtpemailfrom, $emailsubject, $emailbody, $emailtype);  
  47.  
  48. return $rs;  
  49. }  

好了,這個(gè)時(shí)候你的郵箱將會(huì)收到一封來自helloweba的密碼找回郵件,郵件內(nèi)容中有一個(gè)URL鏈接,點(diǎn)擊該鏈接到vevb.com的reset.php來驗(yàn)證郵箱。

 

 
  1. include_once("connect.php");//連接數(shù)據(jù)庫  
  2.  
  3. $token = stripslashes(trim($_GET['token']));  
  4. $email = stripslashes(trim($_GET['email']));  
  5. $sql = "select * from `t_user` where email='$email'";  
  6.  
  7. $query = mysql_query($sql);  
  8. $row = mysql_fetch_array($query);  
  9. if($row){  
  10. $mt = md5($row['id'].$row['username'].$row['password']);  
  11. if($mt==$token){  
  12. if(time()-$row['getpasstime']>24*60*60){  
  13. $msg = '該鏈接已過期!';  
  14. }else{  
  15. //重置密碼...  
  16. $msg = '請(qǐng)重新設(shè)置密碼,顯示重置密碼表單,<br/>這里只是演示,略過。';  
  17. }  
  18. }else{  
  19. $msg = '無效的鏈接';  
  20. }  
  21. }else{  
  22. $msg = '錯(cuò)誤的鏈接!';  
  23. }  
  24. echo $msg;  

reset.php首先接受參數(shù)email和token,然后根據(jù)email查詢數(shù)據(jù)表t_user中是否存在該Email,如果存在則獲取該用戶的信息,并且和sendmail.php中的token組合方式一樣構(gòu)建token值,然后與url傳過來的token進(jìn)行對(duì)比,如果當(dāng)前時(shí)間與發(fā)送郵件時(shí)的時(shí)間相差超過24小時(shí)的,則提示“該鏈接已過期!”,反之,則說明鏈接有效,并且調(diào)轉(zhuǎn)到重置密碼頁面,最后就是用戶自己設(shè)置新密碼了。

小結(jié):通過注冊(cè)郵箱驗(yàn)證與本文郵件找回密碼,我們知道發(fā)送郵件在網(wǎng)站開發(fā)中的應(yīng)用以及它的重要性,當(dāng)然,現(xiàn)在也流行短信驗(yàn)證應(yīng)用,這個(gè)需要相關(guān)的短信接口對(duì)接就可以了。

最后,附上數(shù)據(jù)表t_user結(jié)構(gòu):

 

 
  1. CREATE TABLE `t_user` (  
  2. `id` int(11) NOT NULL auto_increment,  
  3. `username` varchar(30) NOT NULL,  
  4. `password` varchar(32) NOT NULL,  
  5. `email` varchar(50) NOT NULL,  
  6. `getpasstime` int(10) NOT NULL,  
  7. PRIMARY KEY (`id`)  
  8. ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产午夜免费不卡精品理论片 | 欧洲成人一区二区 | 舌头伸进添的我好爽高潮网站 | 狠狠操人人干 | 激情小说激情图片激情电影 | 精品久久久久久亚洲精品 | 九九精品视频观看 | 暴力肉体进入hdxxxx古装 | 久久91精品| 蜜桃91麻豆 | 逼片视频| 精品国产一区二区三区四区阿崩 | 精品1| h视频在线免费观看 | 成人三级黄色片 | h视频在线免费看 | 欧美人与性禽动交精品 | 欧美a视频在线观看 | av成人免费 | 免费一级毛片在线播放视频 | 国产91丝袜在线播放 | 一级在线免费观看视频 | 桥本有菜免费av一区二区三区 | 成人av一区二区免费播放 | 欧美伦理一区二区 | 国产做爰全免费的视频黑人 | 中文字幕在线观看成人 | 看片一区二区三区 | 成人国产在线看 | 国产九九热视频 | 国产精品视频一区二区三区四区五区 | 日韩黄a| 99激情 | av不卡免费观看 | 成人在线视频在线观看 | 国产精品视频久 | 欧美综合在线观看 | 吾色视频 | 精品国产一区三区| 91av资源在线| 欧美在线中文字幕 |