今天客戶回報說網站會員無法修改自己帳號的E-MAIL,結果用多個網站多個Xoops版本測試還真的有這問題存在,即使是最新的xoops2.5.9也一樣無法修改,profile模組也是最新版本的,問題到底出在哪?於是作了以下的測試。
先檢查看看管理後台->偏好設定->註冊會員設定,允許會員修改電子郵件地址是否設為是
確認設定無誤後,再以會員帳號登入(非管理員帳號)->進到帳號管理-點選修改電子郵件
輸入密碼及新的E-MAIL後送出,結果E-MAIL還是一樣,完全沒更新!!
那就是程式的問題了,經過測試後終於找到解決方法如下:
找到以下檔案,用筆記本打開
xoops根目錄/modules/profile/changemail.php
找到約49行的地方的以下這段程式碼
if (!password_verify($oldpass, $GLOBALS['xoopsUser']->getVar('pass', 'n'))) {
$errors[] = _PROFILE_MA_WRONGPASSWORD;
}
先檢查看看管理後台->偏好設定->註冊會員設定,允許會員修改電子郵件地址是否設為是
確認設定無誤後,再以會員帳號登入(非管理員帳號)->進到帳號管理-點選修改電子郵件
輸入密碼及新的E-MAIL後送出,結果E-MAIL還是一樣,完全沒更新!!
那就是程式的問題了,經過測試後終於找到解決方法如下:
找到以下檔案,用筆記本打開
xoops根目錄/modules/profile/changemail.php
找到約49行的地方的以下這段程式碼
if (!password_verify($oldpass, $GLOBALS['xoopsUser']->getVar('pass', 'n'))) {
$errors[] = _PROFILE_MA_WRONGPASSWORD;
}
替換為
if (!password_verify($pass, $GLOBALS['xoopsUser']->getVar('pass', 'n'))) {
$errors[] = _PROFILE_MA_WRONGPASSWORD;
}
問題就是出在$oldpass變數並不存在,所以無論輸入幾次密碼都是顯示密碼錯誤,也就無法進行變更e-mail後面的code運作,吧$oldpass改成$pass後會員修改E-MAIL功能就可以常使用了。
教學撰寫 徐嘉裕 Neil hsu
$errors[] = _PROFILE_MA_WRONGPASSWORD;
}
問題就是出在$oldpass變數並不存在,所以無論輸入幾次密碼都是顯示密碼錯誤,也就無法進行變更e-mail後面的code運作,吧$oldpass改成$pass後會員修改E-MAIL功能就可以常使用了。
教學撰寫 徐嘉裕 Neil hsu
留言
張貼留言