本篇文章為大家展示了怎么在PHP中利用jQuery實現(xiàn)一個密碼找回功能,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
成都創(chuàng)新互聯(lián)專注于大安市企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,商城建設(shè)。大安市網(wǎng)站建設(shè)公司,為大安市等地區(qū)提供建站服務(wù)。全流程定制開發(fā),專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)一般步驟是:
1.表單輸入注冊時的郵箱;
2.驗證用戶郵箱是否正確,如果用戶郵箱不存在網(wǎng)站的用戶表中,則提示用戶郵箱未注冊;
3.發(fā)送郵件,如果用戶郵箱確實存在用戶表中,則組合用于驗證用戶信息的字符串,并構(gòu)造URL發(fā)送到用戶郵箱中;
4.用戶登錄郵箱收取郵件,點擊URL鏈接到網(wǎng)站驗證程序;
5.網(wǎng)站程序通過用戶請求的字符串查詢本地用戶表,比對用戶信息是否正確;
6.如果正確則轉(zhuǎn)到重置密碼頁面重新設(shè)置新密碼,反之則提示用戶驗證無效。
HTML
我們在找回密碼的頁面上放置一個要求用戶輸入注冊時所用的郵箱,然后提交前臺js來處理交互。
輸入您注冊的電子郵箱,找回密碼:
jQuery
當用戶輸入完郵箱并點擊提交后,jQuery先驗證郵箱格式是否正確,如果正確則通過向后臺sendmail.php發(fā)送Ajax請求,sendmail.php負責(zé)驗證郵箱是否存在和發(fā)送郵件,并會返回相應(yīng)的處理結(jié)果給前臺頁面,請看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("請?zhí)顚懻_的郵箱!"); }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基礎(chǔ),那上面的代碼一目了然,不多解釋。
當然別忘了在頁面中加載jQuery庫文件,有的同學(xué)經(jīng)常問我說從jb51.net下載了demo怎么用不了,那80%是jquery或者其他文件加載路徑錯了導(dǎo)致沒加載必要的文件。
PHP
sendmail.php需要驗證Email是否存在系統(tǒng)用戶表中,如果有,則讀取用戶信息,將用戶id、用戶名和密碼驚醒md5加密生成一個特別的字符串作為找回密碼的驗證碼,然后構(gòu)造URL。同時我們?yōu)榱丝刂芔RL鏈接的時效性,將記錄用戶提交找回密碼動作的操作時間,最后調(diào)用郵件發(fā)送類發(fā)送郵件到用戶郵箱,發(fā)送郵件類smtp.class.php已經(jīng)打包好,請下載。
include_once("connect.php");//連接數(shù)據(jù)庫 $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 = "/tupian/20230522/reset.php &token=".$token;//構(gòu)造URL $time = date('Y-m-d H:i'); $result = sendmail($time,$email,$url); if($result==1){//郵件發(fā)送成功 $msg = '系統(tǒng)已向您的郵箱發(fā)送了一封郵件
請登錄到您的郵箱及時重置您的密碼!'; //更新數(shù)據(jù)發(fā)送時間 mysql_query("update `t_user` set `getpasstime`='$getpasstime' where id='$uid '"); }else{ $msg = $result; } echo $msg; } //發(fā)送郵件 function sendmail($time,$email,$url){ include_once("smtp.class.php"); $smtpserver = ""; //SMTP服務(wù)器,如smtp.163.com $smtpserverport = 25; //SMTP服務(wù)器端口 $smtpusermail = ""; //SMTP服務(wù)器的用戶郵箱 $smtpuser = ""; //SMTP服務(wù)器的用戶帳號 $smtppass = ""; //SMTP服務(wù)器的用戶密碼 $smtp = new Smtp($smtpserver, $smtpserverport, true, $smtpuser, $smtppass); //這里面的一個true是表示使用身份驗證,否則不使用身份驗證. $emailtype = "HTML"; //信件類型,文本:text;網(wǎng)頁:HTML $smtpemailto = $email; $smtpemailfrom = $smtpusermail; $emailsubject = "jb51.net - 找回密碼"; $emailbody = "親愛的".$email.":
您在".$time."提交了找回密碼請求。請點擊下面的鏈接重置密碼 (按鈕24小時內(nèi)有效)。
".$url.""; $rs = $smtp->sendmail($smtpemailto, $smtpemailfrom, $emailsubject, $emailbody, $emailtype); return $rs; }
好了,這個時候你的郵箱將會收到一封來自helloweba的密碼找回郵件,郵件內(nèi)容中有一個URL鏈接,點擊該鏈接到j(luò)b51.net的reset.php來驗證郵箱。
include_once("connect.php");//連接數(shù)據(jù)庫 $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 = '請重新設(shè)置密碼,顯示重置密碼表單,
這里只是演示,略過。'; } }else{ $msg = '無效的鏈接'; } }else{ $msg = '錯誤的鏈接!'; } echo $msg;
reset.php首先接受參數(shù)email和token,然后根據(jù)email查詢數(shù)據(jù)表t_user中是否存在該Email,如果存在則獲取該用戶的信息,并且和sendmail.php中的token組合方式一樣構(gòu)建token值,然后與url傳過來的token進行對比,如果當前時間與發(fā)送郵件時的時間相差超過24小時的,則提示“該鏈接已過期!”,反之,則說明鏈接有效,并且調(diào)轉(zhuǎn)到重置密碼頁面,最后就是用戶自己設(shè)置新密碼了。
小結(jié):通過注冊郵箱驗證與本文郵件找回密碼,我們知道發(fā)送郵件在網(wǎng)站開發(fā)中的應(yīng)用以及它的重要性,當然,現(xiàn)在也流行短信驗證應(yīng)用,這個需要相關(guān)的短信接口對接就可以了。
最后,附上數(shù)據(jù)表t_user結(jié)構(gòu):
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;
上述內(nèi)容就是怎么在PHP中利用jQuery實現(xiàn)一個密碼找回功能,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。