會員郵箱驗證,郵箱驗證的目的就是解決會員密碼忘記后怎樣找回,可是當我們整合discuz論壇后,會發現我們從網站找回密碼的功能不能用,當用戶從郵箱收到找回密碼的驗證信息后,修改的密碼不起作用,我一開始也遇到這樣的問題,我一開始還以為dede出問題了,我又重新測試了一次,發現dede并沒有錯誤,后來我又詳細看了一下代碼,發現會員修改密碼時候并沒有寫入到ucenter里面,出現這個問題,我感覺是由于dede和dz的安裝順序有問題吧,大家都知道dz6.0之后的dz整合都是通過uc來做的,我是先安裝的dede,這樣會出現一些未知的錯誤吧,我也不想重新再裝了,說不定裝上之后還不知道行不行,所以還是自己將它寫入到uc里面吧.
打開member下的resetpassword.php文件,找到大概134行:
- 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;
- }
- }
- //修改為:
- if($pwd == $pwdok)
- {
- #api{{
- if(defined('UC_API') && @include_once DEDEROOT.'/uc_client/client.php')
- {
- $row1 = $db->GetOne("Select * From dede_member where mid = '$mid'");
- $ucresult = uc_user_edit($row1['userid'], '', $pwdok, '', 1);
- }
- #/aip}}
- $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;
- }
- }
主要是在修改密碼之前加入寫入uc的代碼:
- #api{{
- if(defined('UC_API') && @include_once DEDEROOT.'/uc_client/client.php')
- {
- $row1 = $db->GetOne("Select * From dede_member where mid = '$mid'");
- $ucresult = uc_user_edit($row1['userid'], '', $pwdok, '', 1);
- }
- #/aip}}
新聞熱點
疑難解答