加入收藏 | 设为首页 | 会员中心 | 我要投稿 鞍山站长网 (https://www.0412zz.com/)- 应用安全、运维、云计算、5G、云通信!
当前位置: 首页 > 教程 > 正文

dedecms织梦会员通过邮箱找回密码方法

发布时间:2022-09-02 10:45:13 所属栏目:教程 来源:互联网
导读:首先打开文件: /member/resetpassword.php 这是织梦会员找回密码的核心文件! 在148行有这么一句: showmsg(对不起,临时密码错误, -1); 看来问题就在这了! 但是怎么引起的呢,别急继续看代码 从125行往下看: 01 if(isset($key)) $pwdtmp = $key; 02 $sn =
首先打开文件: /member/resetpassword.php 这是织梦会员找回密码的核心文件!
 
在148行有这么一句: showmsg('对不起,临时密码错误', '-1');   看来问题就在这了! 但是怎么引起的呢,别急继续看代码
 
从125行往下看:
 
01
 
if(isset($key)) $pwdtmp = $key;
 
02
 
        $sn = md5(trim($pwdtmp));
 
03
 
        if($row['pwd'] == $sn)
 
04
 
        {
 
05
 
            if($pwd != "")
 
06
 
            {
 
07
 
                if($pwd == $pwdok)
 
08
 
                {
 
09
 
                    $pwdok = md5($pwdok);
 
10
 
                    $sql = "DELETE FROM `dede_pwd_tmp` WHERE `mid` = '$id';";
 
11
 
                    $db->executenonequery($sql);
 
12
 
                    $sql = "UPDATE `dede_member` SET `pwd` = '$pwdok' WHERE `mid` = '$id';";
 
13
 
                    if($db->executenonequery($sql))
 
14
 
                    {
 
15
 
                        showmsg('更改密码成功,请牢记新密码', 'login.php');
 
16
 
                        exit;
 
17
 
                    }
 
18
 
                }
 
19
 
            }
 
20
 
            showmsg('对不起,新密码为空或填写不一致', '-1');
 
21
 
            exit;
 
22
 
        }
 
23
 
        showmsg('对不起,临时密码错误', '-1');
 
24
 
        exit;
 
这段代码的意思是: 如果 row['pwd' 等于 $sn , 则修改密码成功, 如果不等于 就提示:“对不起,临时密码错误”
 
看来问题出在$pwdtmp 这个字段上, 这个字段值来自前台resetpassword2.htm:
 
1
 
<?php if(empty($key)){ ?>
 
2
 
        <li><span>临时验证码:</span>
 
3
 
          <input name='pwdtmp' type="password" />
 
4
 
        </li>
 
5
 
        <?php }else{ ?>
 
6
 
        <input name="key" type="hidden" value="<?php echo $key;?>" />
 
7
 
        <?php }?>代码看到这也许有人就晕了, 又出了一个字段:$key, 这段代码的意思是:如果key为空 显示:  <input name='pwdtmp' type="password" /> ,如果不为空 显示 :<input name="key" type="hidden" value="<?php echo $key;?>" />
 
看来根源问题就是$key, key值是系统发送给会员邮件的一个字段,打开文件:/member/inc/inc_pwd_functions.php 找到:
 
 
function newmail($mid, $userid, $mailto, $type, $send)
 
{
 
    global $db,$cfg_adminemail,$cfg_webname,$cfg_basehost,$cfg_memberurl;
 
    $mailtime = time();
 
    $randval = random(8);
 
   $mailtitle = $cfg_webname.":密码修改";
 
    $mailto = $mailto;
 
    $headers = "From: ".$cfg_adminemail."rnReply-To: $cfg_adminemail";
 
    $mailbody = "亲爱的".$userid.":rn您好!感谢您使用".$cfg_webname."网。rn".$cfg_webname."应您的要求,重新设置密码:(注:如果您没有提出申请,请检查您的信息是否泄漏。)rn本次临时登陆密码为:".$randval." 请于三天内登陆下面网址确认修改。rn".$cfg_basehost.$cfg_memberurl."/resetpassword.php?dopost=getpasswd&id=".$mid."&key=".$randval;
 
 
用红字标注的地方原文件是没有的, 也就是没用传递key值,需要加上&key=".$randval,问题就解决了,到此会员就可以通过邮件找回密码了!
 

(编辑:鞍山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读