今天出现怪异现象整了一小会儿,汗,分享出来,免得以后同仁遇到一样的问题,再耽误时间。
点找回密码,输入用户名,邮箱后,发系统信件至邮件,从邮箱里转回的链接,开始找回密码,在输入密码的时候,会出现,尽管你重复密码是输入的一样,但是还是会提示输入的不一样.
第一个问题:这是第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,
解决方法:
第一步:
根目录membergetpwd.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';
}
第二步:
根目录 memberapipassport_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的原因就是要它忽略原始密码.
问题到这里完美解决了。