php发邮箱验证码找回密码,织梦dede会员通过邮箱找回密码方法
首先打開文件:?/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."\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,問題就解決了,到此會員就可以通過郵件找回密碼了!
總結
以上是生活随笔為你收集整理的php发邮箱验证码找回密码,织梦dede会员通过邮箱找回密码方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php怎么改标题,PHP – 如何更改包
- 下一篇: 投屏投不上去如何回事