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

dedecms织梦会员通过邮箱找回密码方法,第1张

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

首先打开文件: /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:

  


 
  • 临时验证码:

  • 代码看到这也许有人就晕了, 又出了一个字段:$key, 这段代码的意思是:如果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,问题就解决了,到此会员就可以通过邮件找回密码了!

     

    欢迎分享,转载请注明来源:内存溢出

    原文地址: https://outofmemory.cn/zaji/3010444.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-09-27
    下一篇 2022-09-27

    发表评论

    登录后才能评论

    评论列表(0条)

    保存