官术网_书友最值得收藏!

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">&nbsp; >>密碼找回</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;
    ?>
主站蜘蛛池模板: 库尔勒市| 临安市| 湖口县| 义马市| 乐至县| 承德市| 高密市| 南京市| 寿光市| 柳河县| 新民市| 广德县| 会泽县| 新野县| 鄄城县| 彭州市| 梧州市| 星子县| 滦南县| 探索| 萨嘎县| 汝阳县| 古丈县| 保山市| 正镶白旗| 邢台县| 垫江县| 和平区| 开远市| 陵川县| 小金县| 台东市| 绥中县| 武鸣县| 高雄县| 黑龙江省| 潮安县| 曲沃县| 深水埗区| 清苑县| 山阴县|