欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP結合jQuery實現找回密碼

 更新時間:2015年07月22日 11:36:39   投稿:hebedich  
本文將使用PHP+Mysql+jQuery來實現一個密碼找回的功能,分享給大家思路和具體的代碼,有需要的小伙伴可以參考下。

通常所說的密碼找回功能不是真的能把忘記的密碼找回,因為我們的密碼是加密保存的,一般開發(fā)者會在驗證用戶信息后通過程序生成一個新密碼或者生成一個特定的鏈接并發(fā)送郵件到用戶郵箱,用戶從郵箱鏈接到網站的重置密碼模塊重新設置新密碼。

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

一般步驟是:

1.表單輸入注冊時的郵箱;
2.驗證用戶郵箱是否正確,如果用戶郵箱不存在網站的用戶表中,則提示用戶郵箱未注冊;
3.發(fā)送郵件,如果用戶郵箱確實存在用戶表中,則組合用于驗證用戶信息的字符串,并構造URL發(fā)送到用戶郵箱中;
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發(fā)送Ajax請求,sendmail.php負責驗證郵箱是否存在和發(fā)送郵件,并會返回相應的處理結果給前臺頁面,請看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("<h3>"+msg+"</h3>"); 
        } 
      }); 
    } 
  }); 
}) 

以上使用的jQuery代碼很方便簡潔的完成了前端交互操作,如果您有一定的jQuery基礎,那上面的代碼一目了然,不多解釋。
當然別忘了在頁面中加載jQuery庫文件,有的同學經常問我說從jb51.net下載了demo怎么用不了,那80%是jquery或者其他文件加載路徑錯了導致沒加載必要的文件。

PHP

sendmail.php需要驗證Email是否存在系統(tǒng)用戶表中,如果有,則讀取用戶信息,將用戶id、用戶名和密碼驚醒md5加密生成一個特別的字符串作為找回密碼的驗證碼,然后構造URL。同時我們?yōu)榱丝刂芔RL鏈接的時效性,將記錄用戶提交找回密碼動作的操作時間,最后調用郵件發(fā)送類發(fā)送郵件到用戶郵箱,發(fā)送郵件類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.dbjr.com.cn/demo/resetpass/reset.php?email=".$email." 
&token=".$token;//構造URL 
  $time = date('Y-m-d H:i'); 
  $result = sendmail($time,$email,$url); 
  if($result==1){//郵件發(fā)送成功 
    $msg = '系統(tǒng)已向您的郵箱發(fā)送了一封郵件<br/>請登錄到您的郵箱及時重置您的密碼!'; 
    //更新數據發(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服務器,如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 = "jb51.net - 找回密碼"; 
  $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鏈接,點擊該鏈接到jb51.net的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進行對比,如果當前時間與發(fā)送郵件時的時間相差超過24小時的,則提示“該鏈接已過期!”,反之,則說明鏈接有效,并且調轉到重置密碼頁面,最后就是用戶自己設置新密碼了。

小結:通過注冊郵箱驗證與本文郵件找回密碼,我們知道發(fā)送郵件在網站開發(fā)中的應用以及它的重要性,當然,現在也流行短信驗證應用,這個需要相關的短信接口對接就可以了。
最后,附上數據表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; 

以上所述就是本文的全部內容了,希望大家能夠喜歡。

相關文章

  • php線性表順序存儲實現代碼(增刪查改)

    php線性表順序存儲實現代碼(增刪查改)

    php實現線性表順序存儲的代碼,需要的朋友可以參考下
    2012-02-02
  • PHP開發(fā)環(huán)境配置(MySQL數據庫安裝圖文教程)

    PHP開發(fā)環(huán)境配置(MySQL數據庫安裝圖文教程)

    下載完軟件后開始PHP開發(fā)環(huán)境的配置。注意是開發(fā)環(huán)境,不是服務器環(huán)境。
    2010-04-04
  • PHP關聯數組的10個操作技巧

    PHP關聯數組的10個操作技巧

    數組中的元素都有自己的ID,因此可以方便地訪問它們;關聯數組,它的每個ID 鍵都關聯一個值;這篇文章將介紹10個操作PHP關聯數組的技巧,熟練運用能幫助你提高開發(fā)效率
    2013-01-01
  • PHP采用自定義函數實現遍歷目錄下所有文件的方法

    PHP采用自定義函數實現遍歷目錄下所有文件的方法

    這篇文章主要介紹了PHP采用自定義函數實現遍歷目錄下所有文件的方法,是PHP程序開發(fā)中常見的功能,需要的朋友可以參考下
    2014-08-08
  • PHP中file_get_contents設置header請求頭,curl傳輸選項參數詳解說明

    PHP中file_get_contents設置header請求頭,curl傳輸選項參數詳解說明

    php中遠程獲取和采集內容、實現PHP網頁版的FTP上傳下載、實現模擬登陸、實現接口數據傳輸(API)、實現模擬Cookie、下載文件斷點續(xù)傳等等,都會用到fopen、file_get_contents和curl這樣的函數,當然要對比一下了,程序架構設計當然要無可挑剔了。
    2023-07-07
  • PHP設計模式之建造者模式定義與用法簡單示例

    PHP設計模式之建造者模式定義與用法簡單示例

    這篇文章主要介紹了PHP設計模式之建造者模式定義與用法,簡單描述了建造者模式的概念、原理并結合實例形式分析了建造者模式的具體定義與使用方法,需要的朋友可以參考下
    2018-08-08
  • php 實現svg轉化png格式的方法分析

    php 實現svg轉化png格式的方法分析

    這篇文章主要介紹了php 實現svg轉化png格式的方法,結合實例形式分析了php svg轉化png格式相關實現技巧、遇到的問題與操作注意事項,需要的朋友可以參考下
    2020-01-01
  • 淺談并發(fā)處理PHP進程間通信之System V IPC

    淺談并發(fā)處理PHP進程間通信之System V IPC

    對于進程間通信,每一個完備的語言都應該有對應的處理方式,而 PHP 對應的則是一族對 UNIX SYSTEM V包裝的函數,包括信號量(semaphore)、共享內存(shared memory)和消息隊列(msg queue)的操作。
    2021-05-05
  • php xml分析函數代碼

    php xml分析函數代碼

    我最喜愛的腳本語言不但支持XML而且對其支持正不斷加強。PHP可以讓我迅速將XML文檔發(fā)布到互聯網上,收集XML文檔的統(tǒng)計信息,將XML文檔轉換成其它格式。
    2008-08-08
  • 解析百度搜索結果link?url=參數分析 (全)

    解析百度搜索結果link?url=參數分析 (全)

    自從9月后百度和360開戰(zhàn)的結果就是 百度搜索結果的網址改變了,變成link?url=………這樣的重定向格式了??吹竭@樣的不友好的URL真有破解的沖動。于是今天開始試試破解它
    2012-10-10

最新評論