phpcms整合Ucenter找回密碼無效的解決方法
來源:程序員人生 發布時間:2014-05-31 07:21:34 閱讀次數:3115次
今天出現怪異現象整了一小會兒,汗,分享出來,免得以后同仁遇到一樣的問題,再耽誤時間。
點找回密碼,輸入用戶名,郵箱后,發系統信件至郵件,從郵箱里轉回的鏈接,開始找回密碼,在輸入密碼的時候,會出現,盡管你重復密碼是輸入的一樣,但是還是會提示輸入的不一樣.
第一個問題:這是第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的原因就是要它忽略原始密碼.
問題到這里完美解決了。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈