ECmall 找回密码

本文介绍了一个网站提供的找回密码流程,包括使用安全邮箱或安全手机进行验证,并通过前端表单验证和后端处理来确保安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用安全邮箱和手机找回密码。


/**
     * 普通找回密码
     *
     */
    function index()
    {
        if(!IS_POST)
        {
            /* 导入jQuery的表单验证插件 */
            $this->import_resource('jquery.plugins/jquery.validate.js');
            if (Conf::get('captcha_status.register'))
            {
                $this->assign('captcha', 1);
            }
            $this->display("find_password_1.html");
        }
        else
        {
            if($_POST['sign']=="step1"){
                $addr = $_SERVER['HTTP_REFERER'];
                if (empty($_POST['user_name']))
                {
                    $this->show_warning("unsettled_required", 'go_back', $addr);
                    return ;
                } 
                $user_name = trim($_POST['user_name']);


                $model_member =& m('member');
                $info = $model_member->get("user_name='{$user_name}' or safeemail='{$user_name}' or safephone='{$user_name}'");


                if (empty($info))
                {
                    $this->show_warning('not_exist','go_back', $addr); 
                    return;
                }else{
                    if(!empty($info['safeemail'])){
                        $this->assign('email',$info['safeemail']);
                        $info['safeemail']=preg_replace('/^(\w{3})(\w*)@([\w\.]*)\.(\w*)$/', '\1****@\3.\4',  $info['safeemail']);
                    }
                    if(!empty($info['safephone'])){
                        $this->assign('phone',$info['safephone']);
                        $info['safephone']=preg_replace('/^(\d{3})(\d{4})(\d{4})$/', '\1****\3',  $info['safephone']);
                    }
                }
                $this->assign('userinfo',$info);
                $this->import_resource('jquery.plugins/jquery.validate.js');
                $this->display("find_password_2.html");
            }else if($_POST['sign']=="step2"){
                $addr = $_SERVER['HTTP_REFERER']; 
                if($_SESSION['yanzhengma'] == $_POST['yanzhengma']){
                    $this->assign('user_id',$_POST['user_id']);
                    $this->assign('yanzhengma',$_POST['yanzhengma']);
                    $this->import_resource('jquery.plugins/jquery.validate.js');   
                    $this->display("find_password_3.html");
                }else{
                    $this->show_warning("request_error",'back_index', 'index.php');
                }
            }
            else if($_POST['sign']=="step3"){ 
                if($_SESSION['yanzhengma'] == $_POST['yanzhengma'] || !empty($_POST['user_id']) || !empty($_POST['password'])){
                    $ms =& ms();        //连接用户系统
                    $ms->user->edit($_POST['user_id'],'', array('password' => $_POST['password']) ,true); //强制修改
                    if ($ms->user->has_error())
                    {
                        $this->show_warning($ms->user->get_error());
                        return;
                    } 
                    $this->show_message("edit_success",'login_in', 'index.php?app=member&act=login','back_index', 'index.php');
                }else{
                    $this->show_warning("request_error",'back_index', 'index.php');
                    return ;
                }
            }
        }
    }


//前台页面,第一步,输入用户名;第二步选择何种方式找回,验证;第三步修改密码

第二步:

<script  type="text/javascript">
$(function(){
$('#checktype').change(function(){ 
if(this.value=="email"){
$('.phonetr').hide();
$('.emailtr').show();
$('.getcode').show();
return;
}
if(this.value=="phone"){
$('.emailtr').hide();
$('.phonetr').show();
$('.getcode').show();
return;
}
if(this.selectedIndex=="0"){
$('.phonetr').hide();
$('.emailtr').hide();
$('.getcode').hide();
}
});

var ecanSend =true;
var etime=180;
$("#egetcode").click(function (){
var btn = $(this); 
if (!ecanSend) return;
if($('#checktype').val()=="email" && $('#email').val()!=""){ 
ecanSend = false;
btn.attr({ "disabled": "disabled" });
var sendaddress = $('#email').val();
var hander = setInterval(function () {
if (etime <= 0) {
ecanSend = true;
clearInterval(hander);
etime=180;
btn.val("重新发送验证码");
btn.removeAttr("disabled");
}
else {
ecanSend = false;
btn.attr({ "disabled": "disabled" });
btn.val(etime + "秒后可重新发送");
etime--;
}
}, 1000);
$.ajax({
type: "get",
url : "index.php?app=member&act=get_code&sign=1&ajax=1",
data: {
sendaddress :function(){
return sendaddress;
}
}/*,
success:function(msg){  

if (msg == "1") {
alert("邮件已发送至:" + sendaddress+ " 请注意查收!");
}else if (msg == "2") {
alert("等待再次发送!");
}else if (msg == "0") {
alert("邮件发送失败,请检查邮件地址是否正确!");
}
}*/
});
}else{
alert("请检查重新选择!");
}

}); 


var pcanSend =true;
var ptime=180;
$("#pgetcode").click(function (){
var btn = $(this); 
if (!pcanSend) return;
if($('#checktype').val()=="phone"  && $('#phone').val()!=""){
pcanSend = false;
btn.attr({ "disabled": "disabled" });
var sendaddress = $('#phone').val();
var hander = setInterval(function () {
if (ptime <= 0) {
pcanSend = true;
clearInterval(hander);
ptime=180;
btn.val("重新发送验证码");
btn.removeAttr("disabled");
}
else {
pcanSend = false;
btn.attr({ "disabled": "disabled" });
btn.val(ptime + "秒后可重新发送");
ptime--;
}
}, 1000);
$.ajax({
type: "get",
url : "index.php?app=member&act=get_code&sign=2&ajax=1",
data: {
sendaddress :function(){
return sendaddress;
}
}/*, 
success:function(msg){ 
if (msg == "1") {
alert("短信已发送至:" + sendaddress+ " 请注意查收!");
}else if (msg == "2") {
alert("短信等待3分钟才能再次发送!");
}else if (msg == "0") {
alert("短信发送失败,请检查邮件地址是否正确!");
}
}*/
}); 
}else{
alert("请检查重新选择!");
}
});

$('#find_password_form').validate({
        errorPlacement: function(error, element){
            var error_td = element.parent('td');
            error_td.find('.field_notice').hide();
            error_td.append(error);
},
        success : function(label){
            label.addClass('validate_right').text('OK!');
        },
        onkeyup: false,
        rules : {
yanzhengma : {
                required : true,
                remote   : {
                    url :'index.php?app=member&act=check_code&ajax=1',
                    type:'get',
                    data:{
                        yanzhengma :function(){
                            return $('#yanzhengma').val();
                        }
                    },
                    beforeSend:function(){
                        var _checking = $('#checking_code');
                        _checking.prev('.field_notice').hide();
                        _checking.next('label').hide();
                        $(_checking).show();
                    },
                    complete :function(){
                        $('#checking_code').hide();
                    }
                }
            }
},
        messages : {
yanzhengma : {
                required : '{$lang.yanzhengma_required}', 
                remote   : '{$lang.yanzhengma_taken}'
            }
}
    });

})
</script>


<form action="" method="POST" id="find_password_form">
<input type="hidden" name="sign" value="step2">
<input type="hidden" name="user_id" value="{$userinfo.user_id}">
<input type="hidden" id="email" value="{$email}">
<input type="hidden" id="phone" value="{$phone}">
                           <table> 
                                <tr>
                                     <td>{$lang.your_username}:</td><td>{$userinfo.user_name}</td>
                                </tr>
<tr>
<td>找回方式:</td>
<td>
<select id="checktype" name="checktype">
<option value="0">请选择</option>
<!--{if $userinfo.safeemail}-->
<option value="email">安全邮箱方式找回</option>
<!--{/if}-->
<!--{if $userinfo.safephone}-->
<option value="phone">安全手机方式找回</option>
<!--{/if}-->
</select>
</td>
</tr>
<tr class="emailtr" style="display:none;">
                                     <td>{$lang.your_email}:</td><td>{$userinfo.safeemail}</td>
                                </tr>

                                <tr class="phonetr"  style="display:none;">
                                     <td>{$lang.your_phone}:</td><td>{$userinfo.safephone}</td>
                                </tr>
<tr class="emailtr"  style="display:none;">
                                    <td></td>
<td><input type="button" id="egetcode" value="{$lang.getcodebtn}" /></td>
                                </tr>
<tr class="phonetr"  style="display:none;">
                                    <td></td>
<td><input type="button" id="pgetcode" value="{$lang.getcodebtn}" /></td>
                                </tr>
<tr class="getcode" style="display:none;">
<td>{$lang.getcode}:</td>
<td><input type="text" id="yanzhengma" class="text width4" name="yanzhengma"/><label class="field_notice">{$lang.falseyanzhenma}</label><label name="checking_code" id="checking_code" class="checking">{$lang.checking}</label></td>
</tr>
                                <tr class="distance">
                                     <td></td>
                                     <td><input type="submit" value="{$lang.submit}" name="Submit" class="btn" id="captcha1"></td>
                                </tr>
                           </table>
                      </form>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值