您现在的位置是:主页 > 网站建设 > 织梦cms建站教程 > 织梦cms建站教程

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

网络 2020-12-22 织梦cms建站教程 人已围观

简介 如果忘记了会员密码,无法登陆,就需要找回密码,这里旭说博客分享一种用邮箱找回密码的方法

  如果忘记了会员密码,无法登陆,就需要找回密码,这里旭说博客分享一种用邮箱找回密码的方法,首先打开文件: /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."
Reply-To: $cfg_adminemail";

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


".$cfg_basehost.$cfg_memberurl."/resetpassword.php?dopost=getpasswd&id=".$mid."&key=".$randval;

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

关键词:织梦系统(12)

{dede表结束 --> {dede:pagelist listsize='5为5条一页 -->
  • * 姓名:

  • * 手机:

  • * 留言内容:

  • * 验证码: