- PHP典型模塊與項目實戰大全
- 明日科技等等編著
- 866字
- 2018-12-30 10:45:07
1.6 找回密碼
1.6.1 找回密碼功能概述
找回密碼功能用到的技術也是郵箱技術。用戶輸入正確的賬號、密保問題、密保答案后,系統將隨機生成的一組數字發送到用戶的郵箱中,用戶可以通過郵箱來得到新密碼。找回密碼頁面的運行結果如圖1.13所示。

圖1.13 找回密碼頁面的運行結果
1.6.2 找回密碼功能實現過程
找回密碼操作從單擊主頁中的“找回密碼”按鈕開始,在彈出的found.php文件中,創建一個表單,提交找回賬號、密保問題和密保答案,并且載入xmlhttprequest.js和found.js腳本文件。found.php的關鍵代碼如下:
<link rel="stylesheet" href="css/style.css" /> <script language="javascript" src="js/found.js"></script> <script language="javascript" src="js/xmlhttprequest.js"></script> <div id="fdbgdiv" > <div id="top"> >>密碼找回</div> <div id="foundnamediv">找回賬號: <input id="foundname" type="text" style=" width: 100px; height:15px; border:1px #000000 solid; " /></div> <div id="foundnamediv">密保問題: <input id="fdquestion" type="text" style=" width: 100px; height:15px; border:1px #000000 solid; " /></div> <div id="foundnamediv">密保答案: <input id="fdanswer" type="text" style=" width: 100px; height:15px; border:1px #000000 solid; " /></div> <div id="foundnamediv" align="center"><button id="step1"></button></div> </div>
在found.js文件中,調用found_chk.php文件,完成密碼的找回操作,其關鍵代碼如下:
function $(id){ return document.getElementById(id); } window.onload = function(){ $(' foundname' ).focus(); $(' step1' ).onclick = function(){ if($(' foundname' ).value ! = ' ' && $(' fdquestion' ).value ! = ' ' && $ (' fdanswer' ).value ! = ' ' ){ @@ xmlhttp.open(' get' , ' found_chk.php? foundname=' +$(' foundname' ).value+' &question =' +$(' fdquestion' ).value+' &answer=' +$(' fdanswer' ).value, true); xmlhttp.onreadystatechange = function(){ if(xmlhttp.readyState == 4 && xmlhttp.status == 200){ msg = xmlhttp.responseText; if(msg == '1' ){ alert(’找回密碼成功,請登錄郵箱注冊郵箱!' ); window.close(); }else{ alert(’填寫信息錯誤!' ); } } } xmlhttp.send(null); }else{ alert(’請填寫完成信息’); $(' foundname' ).focus(); return false; } } }
在found_chk.php文件中,對用戶提交的密保問題和密保答案進行驗證,如果正確則生成新的密碼,并且更新數據庫中存儲的密碼,同時將新密碼發送到用戶注冊時填寫的郵箱中。found_chk.php的關鍵代碼如下:
<? php include_once ' conn/conn.php' ; require_once ' Zend/Mail.php' ; //調用發送郵件的文件 require_once ' Zend/Mail/Transport/Smtp.php' ; //調用SMTP驗證文件 $reback = '0' ; $name = $_GET[' foundname' ]; //獲取用戶名 $question = $_GET[' question' ]; //獲取密碼保護問題 $answer = $_GET[' answer' ]; //獲取密碼保護的答案 $sql = "select email from tb_member where name = ' ".$name."' and question = ' " .$question."' and answer = ' ".$answer."' "; //定義查詢語句 $email = $conne->getFields($sql,0); //判斷用戶提交的用戶密保是否正確 if($email ! = ' ' ){ //如果正確則執行如下操作 $rnd = rand(1000, time()); //生成隨機數 //更新密碼 $sql = "update tb_member set password = ' ".md5($rnd)."' where name = '".$name."' and question = ' ".$question."' and answer = ' ".$answer."' "; $tmpnum = $conne->uidRst($sql); //執行更新操作 if($tmpnum >= 1){ //發送密碼郵件 $subject="找回密碼"; $mailbody=’密碼找回成功。您賬號的新密碼是’.$rnd; $envelope["from"]="cym3100@163.com"; //$envelope="mrsoft8888@sohu.com"; //網絡版定義登錄使用的郵箱 /*smtp測試版發送郵件方式,使用SMTP作為服務器*/ $tr = new Zend_Mail_Transport_Smtp('192.168.1.247' ); $mail = new Zend_Mail(); $mail->addTo($email, ’獲取用戶新密碼’); $mail->setFrom(' cym3100@163.com' , ’明日科技典型模塊程序測試郵箱,修改用戶 注冊密碼!' ); $mail->setSubject($subject); $mail->setBodyHtml($mailbody); //$mail->send($tr); /*網絡版發送郵件方法*/ /*$config = array(' auth' => ' login' , 'username' => ' mrsoft8888' , 'password' => ' mrsoft8888' ); //定義SMTP的驗證參數 //實例化驗證的對象 $transport = new Zend_Mail_Transport_Smtp(' smtp.sohu.com' , $config); $mail = new Zend_Mail(' GBK' ); //實例化發送郵件對象 $mail->setBodyHtml($mailbody); //發送郵件主體 $mail->setFrom($envelope, ’明日科技典型模塊程序測試郵箱,修改用戶注冊密碼!' ); $mail->addTo($email, ’獲取用戶新密碼’); //定義郵件的接收郵箱 $mail->setSubject($subject); //定義郵件主題 $mail->send($transport); //執行發送操作 /*網絡版發送郵件方法*/ if(false ==$mail->send($tr) ){ $reback = ' -1' ; }else{ $reback = '1' ; } }else{ $reback = '2' ; } }else{ $reback = $sql; } echo $reback; ?>
推薦閱讀
- JBoss Weld CDI for Java Platform
- 深度實踐OpenStack:基于Python的OpenStack組件開發
- WildFly:New Features
- Linux命令行與shell腳本編程大全(第4版)
- Gradle for Android
- Haskell Data Analysis Cookbook
- jQuery Mobile移動應用開發實戰(第3版)
- QPanda量子計算編程
- Python期貨量化交易實戰
- Node.js從入門到精通
- Node.js區塊鏈開發
- Python Programming for Arduino
- Three.js權威指南:在網頁上創建3D圖形和動畫的方法與實踐(原書第4版)
- ArcPy and ArcGIS(Second Edition)
- Java 7 Concurrency Cookbook