ecshop微信商城
  官方微博: 騰訊  
首頁 > ECSHOP教程 > ECSHOP二次開發 > ECSHOP二次開發教程 > ECSHOP用戶中心修改"用戶信息"增加會員密碼問題驗證

ECSHOP用戶中心修改"用戶信息"增加會員密碼問題驗證

ECSHOP教程 / ecshop 教程網(www.kkesgv.icu) 2015-08-23

ECSHOP用戶中心修改"用戶信息"增加會員密碼問題驗證


目的增加會員安全性,修改會員密碼需要,問題驗證

教程開始

1、themes\default\user_transaction.dwt 將

 <select name='sel_question'>
  <option value='0'>{$lang.sel_question}</option>
  {html_options options=$passwd_questions selected=$profile.passwd_question}
  </select>

修改為

      <select name='sel_question' onblur="checkSelQuestion(this.value);" id="sel_question">
          <option value='0'>{$lang.sel_question}</option>
          {html_options options=$passwd_questions selected=$profile.passwd_question}
          </select>
          <span id="sel_question_notice" style="color:#FF0000"> *</span>


<input name="passwd_answer" type="text" size="25" class="inputBg" maxlengt='20' value="{$profile.passwd_answer}"/><!-- {if $field.is_need} --><span style="color:#FF0000"> *</span><!-- {/if} -->

修改為

<input name="passwd_answer" type="text" size="25" class="inputBg" maxlengt='20' value="" id="passwd_answer" onblur="checkSelAnswer(this.value);"/><!-- {if $field.is_need} --><span id="passwd_answer_notice" style="color:#FF0000"> *</span><!-- {/if} -->

2.js\user.js 找到function userEdit()中的

  if (passwd_answer.length > 0 && sel_question == 0 || document.getElementById('passwd_quesetion') && passwd_answer.length == 0)
  {
    msg += no_select_question + '\n';
  }

替換成

if(!checkAnswer(passwd_answer)){
    msg += '- ' '密碼問題答案不正確' '\n';
}

在function userEdit()后添加

function checkAnswer(passwd_answer){
    result = Ajax.call( 'user.php?act=check_passwd_answer''passwd_answer=' + passwd_answer, null , 'GET''TEXT', false );
    result = result.replace(/^\s+|\s+$/g,"");
    if ( result != "ok" ){
        return false;
    }else{
        return true;
    }
}
 
/* *
* 修改用戶信息時驗證密碼問題
*/
function checkSelQuestion(sel_question){
    if (sel_question == 0){
        document.getElementById('sel_question_notice').innerHTML = '必須選擇您的密碼問題';
    }
    else{
        result = Ajax.call( 'user.php?act=check_sel_question''sel_question=' + sel_question, null , 'GET''TEXT', false );
        result = result.replace(/^\s+|\s+$/g,"");
        if ( result == 'ok' ){
            document.getElementById('sel_question_notice').innerHTML = '密碼問題正確';
        }
        else{
            document.getElementById('sel_question_notice').innerHTML = '請選擇正確的密碼問題';
        }
    }
}
 
/* *
* 修改用戶信息時驗證密碼問題答案
*/
function checkSelAnswer(passwd_answer){
    if (passwd_answer == 0){
        document.getElementById('passwd_answer_notice').innerHTML = '必須填寫您的密碼問題答案';
    }
    else{
        result = Ajax.call( 'user.php?act=check_passwd_answer''passwd_answer=' + passwd_answer, null , 'GET''TEXT', false );
        result = result.replace(/^\s+|\s+$/g,"");
        if ( result == 'ok' ){
            document.getElementById('passwd_answer_notice').innerHTML = '密碼問題答案正確';
        }
        else{
            document.getElementById('passwd_answer_notice').innerHTML = '答案不正確請重新輸入';
        }
    }
}

3.user.php中在

/* 用戶登錄界面 */
elseif ($action == 'login')

/* 用戶登錄界面 */

elseif ($action == 'login')

/*驗證密碼問題是否正確*/
elseif($action == 'check_sel_question'){
    $sel_question = trim($_GET['sel_question']);
    $question $user->check_sel_question($user_id);
     
    if (strcmp($sel_question$question)!= 0){
        echo 'false';
    }
    else{
        echo 'ok';
    }
}
/*驗證密碼問題答案是否正確*/
elseif($action == 'check_passwd_answer'){
    $question $user->check_sel_question($user_id);
    $answer $user->check_passwd_answer($user_id,$question);
    $passwd_answer = trim($_GET['passwd_answer']);
    if (strcmp($answer$passwd_answer)!= 0){   
        echo 'false';
    }
    else{
        echo 'ok';
    }
}

4.includes\modules\integrates\integrate.php,在

    /* 會員手機的字段名 */
    var $field_phone    '';

之后,添加

 /* 會員問題的字段名 */
    var $field_question    '';
     
    /* 會員問題的回答字段名 */
    var $field_answer  '';


 /**
     *  檢查cookie是正確,返回用戶名
     *
     * @access  public
     * @param
     *
     * @return void
     */
    function check_cookie()

之上,添加

    /**
     *  檢查指定密碼問題是否為注冊時設置的那個
     *
     * @access  public
     * @param   string  $user_id   用戶id
     *
     * @return  boolean
     */
    function check_sel_question($user_id){
        if (!empty($user_id)){
            $sql "SELECT passwd_question" $this->field_question .
                    " FROM " $this->table($this->user_table).
                    " WHERE " $this->field_id . "='" $user_id "'";
             
            return $this->db->getOne($sql);
        }
    }
     
    /**
     *  檢查指定密碼問題答案是否正確
     *
     * @access  public
     * @param   string  $user_id   用戶id
     * @param   string  $question  密碼問題
     *
     * @return  boolean
     */
    function check_passwd_answer($user_id,$question){
        if (!empty($user_id)){
            $sql "SELECT passwd_answer" $this->field_answer .
                    " FROM " $this->table($this->user_table).
                    " WHERE " $this->field_id . "='" $user_id "' AND passwd_question" " = '" .$question"'";
             
            return $this->db->getOne($sql);
        }
    }

完成。

轉載請注明:ECshop119模板屋-ECshop教程網(全國最專業的ECSHOP插件制作商-專業ECSHOP二次開發)

幫助目錄

在線反饋

加ECSHOP模板屋微信語音幫助。

ecshop微信群

與網友交流ECSHOP開發修改。

加入QQ群交流