怎么在PHP中利用jQuery實(shí)現(xiàn)一個(gè)密碼找回功能-創(chuàng)新互聯(lián)

本篇文章為大家展示了怎么在PHP中利用jQuery實(shí)現(xiàn)一個(gè)密碼找回功能,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

成都創(chuàng)新互聯(lián)專(zhuān)注于大安市企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,商城建設(shè)。大安市網(wǎng)站建設(shè)公司,為大安市等地區(qū)提供建站服務(wù)。全流程定制開(kāi)發(fā),專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)

一般步驟是:


1.表單輸入注冊(cè)時(shí)的郵箱;
2.驗(yàn)證用戶(hù)郵箱是否正確,如果用戶(hù)郵箱不存在網(wǎng)站的用戶(hù)表中,則提示用戶(hù)郵箱未注冊(cè);
3.發(fā)送郵件,如果用戶(hù)郵箱確實(shí)存在用戶(hù)表中,則組合用于驗(yàn)證用戶(hù)信息的字符串,并構(gòu)造URL發(fā)送到用戶(hù)郵箱中;
4.用戶(hù)登錄郵箱收取郵件,點(diǎn)擊URL鏈接到網(wǎng)站驗(yàn)證程序;
5.網(wǎng)站程序通過(guò)用戶(hù)請(qǐng)求的字符串查詢(xún)本地用戶(hù)表,比對(duì)用戶(hù)信息是否正確;
6.如果正確則轉(zhuǎn)到重置密碼頁(yè)面重新設(shè)置新密碼,反之則提示用戶(hù)驗(yàn)證無(wú)效。

HTML

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


 <p><strong>輸入您注冊(cè)的電子郵箱,找回密碼:</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


當(dāng)用戶(hù)輸入完郵箱并點(diǎn)擊提交后,jQuery先驗(yàn)證郵箱格式是否正確,如果正確則通過(guò)向后臺(tái)sendmail.php發(fā)送Ajax請(qǐng)求,sendmail.php負(fù)責(zé)驗(yàn)證郵箱是否存在和發(fā)送郵件,并會(huì)返回相應(yīng)的處理結(jié)果給前臺(tái)頁(yè)面,請(qǐng)看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("請(qǐng)?zhí)顚?xiě)正確的郵箱!"); 
    }else{ 
      $("#sub_btn").attr("disabled","disabled").val('提交中..').css("cursor","default"); 
      $.post("sendmail.php",{mail:email},function(msg){ 
        if(msg=="noreg"){ 
          $("#chkmsg").html("該郵箱尚未注冊(cè)!"); 
          $("#sub_btn").removeAttr("disabled").val('提 交').css("cursor","pointer"); 
        }else{ 
          $(".demo").html("<h4>"+msg+"</h4>"); 
        } 
      }); 
    } 
  }); 
})

以上使用的jQuery代碼很方便簡(jiǎn)潔的完成了前端交互操作,如果您有一定的jQuery基礎(chǔ),那上面的代碼一目了然,不多解釋。
當(dāng)然別忘了在頁(yè)面中加載jQuery庫(kù)文件,有的同學(xué)經(jīng)常問(wèn)我說(shuō)從jb51.net下載了demo怎么用不了,那80%是jquery或者其他文件加載路徑錯(cuò)了導(dǎo)致沒(méi)加載必要的文件。

PHP

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


 include_once("connect.php");//連接數(shù)據(jù)庫(kù) 
 
$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){//該郵箱尚未注冊(cè)! 
  echo 'noreg'; 
  exit;   
}else{ 
  $row = mysql_fetch_array($query); 
  $getpasstime = time(); 
  $uid = $row['id']; 
  $token = md5($uid.$row['username'].$row['password']);//組合驗(yàn)證碼 
  $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ā)送了一封郵件<br/>請(qǐng)登錄到您的郵箱及時(shí)重置您的密碼!'; 
    //更新數(shù)據(jù)發(fā)送時(shí)間 
    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ù)器的用戶(hù)郵箱 
  $smtpuser = ""; //SMTP服務(wù)器的用戶(hù)帳號(hào) 
  $smtppass = ""; //SMTP服務(wù)器的用戶(hù)密碼 
  $smtp = new Smtp($smtpserver, $smtpserverport, true, $smtpuser, $smtppass); 
  //這里面的一個(gè)true是表示使用身份驗(yàn)證,否則不使用身份驗(yàn)證. 
  $emailtype = "HTML"; //信件類(lèi)型,文本:text;網(wǎng)頁(yè):HTML 
  $smtpemailto = $email; 
  $smtpemailfrom = $smtpusermail; 
  $emailsubject = "jb51.net - 找回密碼"; 
  $emailbody = "親愛(ài)的".$email.":<br/>您在".$time."提交了找回密碼請(qǐng)求。請(qǐng)點(diǎn)擊下面的鏈接重置密碼 
(按鈕24小時(shí)內(nèi)有效)。<br/><a href='".$url."'target='_blank'>".$url."</a>"; 
  $rs = $smtp->sendmail($smtpemailto, $smtpemailfrom, $emailsubject, $emailbody, $emailtype); 
 
  return $rs; 
}

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


 include_once("connect.php");//連接數(shù)據(jù)庫(kù) 
 
$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 = '該鏈接已過(guò)期!'; 
    }else{ 
      //重置密碼... 
      $msg = '請(qǐng)重新設(shè)置密碼,顯示重置密碼表單,<br/>這里只是演示,略過(guò)。'; 
    } 
  }else{ 
    $msg = '無(wú)效的鏈接'; 
  } 
}else{ 
  $msg = '錯(cuò)誤的鏈接!';   
} 
echo $msg;

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


小結(jié):通過(guò)注冊(cè)郵箱驗(yàn)證與本文郵件找回密碼,我們知道發(fā)送郵件在網(wǎng)站開(kāi)發(fā)中的應(yīng)用以及它的重要性,當(dāng)然,現(xiàn)在也流行短信驗(yàn)證應(yīng)用,這個(gè)需要相關(guān)的短信接口對(duì)接就可以了。
最后,附上數(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實(shí)現(xiàn)一個(gè)密碼找回功能,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站欄目:怎么在PHP中利用jQuery實(shí)現(xiàn)一個(gè)密碼找回功能-創(chuàng)新互聯(lián)
瀏覽路徑:http://muchs.cn/article10/dhiodo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、GoogleApp設(shè)計(jì)、手機(jī)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)