网站源码-图片-资料下载-学习资料-牛资料网!只做精品资料网
  • 首 页
  • dedecms织梦会员通过邮箱找回密码方法
    时间:2018-08-20 21:02 来源:www.xyhndec.com 作者:牛资料网 浏览:收藏 挑错 打印

    首先打开文件: /member/resetpassword.php 这是织梦会员找回密码的核心文件!

    在148行有这么一句: showmsg('对不起,临时密码错误', '-1');   看来问题就在这了! 但是怎么引起的呢,别急继续看代码

    从125行往下看:

    if(isset($key)) $pwdtmp = $key;
            $sn = md5(trim($pwdtmp));
            if($row['pwd'] == $sn)
            {
                if($pwd != "")
                {
                    if($pwd == $pwdok)
                    {
                        $pwdok = md5($pwdok);
                        $sql = "DELETE FROM `dede_pwd_tmp` WHERE `mid` = '$id';";
                        $db->executenonequery($sql);
                        $sql = "UPDATE `dede_member` SET `pwd` = '$pwdok' WHERE `mid` = '$id';";
                        if($db->executenonequery($sql))
                        {
                            showmsg('更改密码成功,请牢记新密码', 'login.php');
                            exit;
                        }
                    }
                }
                showmsg('对不起,新密码为空或填写不一致', '-1');
                exit;
            }
            showmsg('对不起,临时密码错误', '-1');
            exit;

     

    这段代码的意思是: 如果 row['pwd' 等于 $sn , 则修改密码成功, 如果不等于 就提示:“对不起,临时密码错误”

    看来问题出在$pwdtmp 这个字段上, 这个字段值来自前台resetpassword2.htm:

      

    <?php if(empty($key)){ ?>
            <li><span>临时验证码:</span>
              <input name='pwdtmp' type="password" />
            </li>
            <?php }else{ ?>
            <input name="key" type="hidden" value="<?php echo $key;?>" />
            <?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."\r\nReply-To: $cfg_adminemail";

        $mailbody = "亲爱的".$userid.":\r\n您好!感谢您使用".$cfg_webname."网。\r\n".$cfg_webname."应您的要求,重新设置密码:(注:如果您没有提出申请,请检查您的信息是否泄漏。)\r\n本次临时登陆密码为:".$randval." 请于三天内登陆下面网址确认修改。\r\n".$cfg_basehost.$cfg_memberurl."/resetpassword.php?dopost=getpasswd&id=".$mid."&key=".$randval;

    用红字标注的地方原文件是没有的, 也就是没用传递key值,需要加上&key=".$randval,问题就解决了,到此会员就可以通过邮件找回密码了!

     


    郑重声明:
    牛资料网所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
    我们不承担任何技术及版权问题,且不对任何资源负法律责任。
    如无法下载,联系牛资料网索要。
    如有侵犯您的版权,请及时联系QQ:964613048,我们尽快处理。

    dede5.7文档关键词维护项“链接网址”过长被截断解决办法dede5.7文档关键词维护项“链接网址”
    织梦dedecms文章列表循环标签增加notypeid属性对指定栏目过滤织梦dedecms文章列表循环标签增加notyp
    织梦dedecms专题模板应用分析及使用案例织梦dedecms专题模板应用分析及使用案
    推荐栏目
    • 客服:我们竭诚为您服务!
    • 客服:我们竭诚为您服务!