phpcms整合Ucenter找回密码无效的解决方法

今天出现怪异现象整了一小会儿,汗,分享出来,免得以后同仁遇到一样的问题,再耽误时间。
点找回密码,输入用户名,邮箱后,发系统信件至邮件,从邮箱里转回的链接,开始找回密码,在输入密码的时候,会出现,尽管你重复密码是输入的一样,但是还是会提示输入的不一样. 
第一个问题:这是第1个问题,如果你没有遇到这问题,这段可以忽略掉,修改方法:找到templates/default/member/get_pwd.html文件里面的输入密码的输入框: 
<input type="password" name="password" id="password" require="true" datatype="limit" min="3" max="20" msg="密码长度必须大于3小于20" />
把name随便改一下不同与password的名称,我这里就改成reg_password了,就改成下面这样了 
<input type="password" name="reg_password" id="password" require="true" datatype="limit" min="3" max="20" msg="密码长度必须大于3小于20" /> 
加粗给以对比 
然后再找到确认密码的输入框: 
<input type="password" id="pwdconfirm" name="pwdconfirm" require="true" datatype="repeat" to="password" msg="两次输入的密码不一致" /> 
把to="password"中的password改成你在输入密码框那里改的名称: 
<input type="password" id="pwdconfirm" name="pwdconfirm" require="true" datatype="repeat" to="reg_password" msg="两次输入的密码不一致" /> 
然后再去member/getpwd.php里面找到 
if(!$member->match_authcode($userid, $authstr)) showmessage($LANG['verify_string_not_correct']); 
在它前面加上 
$password = $reg_password; 
好,第一个问题解决,接着 

第二个问题:提交后,提示成功,但是却不能修改密码, 
原因:在getpwd.php中所走的是$step = 4那段代码 大概在58行,也就是 
if(!$member->match_authcode($userid, $authstr)) showmessage($LANG['verify_string_not_correct']); 
这里,整合了UC后,所走的是 67行,但在这里虽然执行了,但是没能把值传给UC, 
解决方法: 
第一步: 
根目录\member\getpwd.php 
将代码(65行) 
if($PHPCMS['uc']) 
{ 
$action = 'editpwd'; 
require MOD_ROOT.'api/passport_server_ucenter.php'; 
} 

修改为: 
if($PHPCMS['uc']) 
{ 
$username = $name; 
$new_password = $password; 
$action = 'editpwd'; 
require MOD_ROOT.'api/passport_server_ucenter.php'; 
} 
第二步: 
根目录 \member\api\passport_server_ucenter.php 文件第121行 
uc_call("uc_user_edit", array($username, $old_password, $new_password, $email)); 
修改为 
uc_call("uc_user_edit", array($username, $old_password, $new_password, $email, 1)); 
这里改为1的原因就是要它忽略原始密码. 
问题到这里完美解决了。

你可能感兴趣的:(phpcms2008)