質問 > フロント機能 > (パスワードを忘れた方へ)秘密の質問を正しくないものを入力したとしても新パスワードが発行される。 |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
moment |
投稿日時: 2016/3/13 12:35
対応状況: −−−
|
常連 登録日: 2014/6/30 居住地: 投稿: 45 |
(パスワードを忘れた方へ)秘密の質問を正しくないものを入力したとしても新パスワードが発行される。 大変お世話になっております。
パスワードを忘れた方への機能の流れで、秘密の質問を入力する際に空欄の状態で次へボタンを押すと、“秘密の質問が入力されていません”と表示されますが、例えば正しくないものを入力した時に(例:0、a等の一文字でさえ)新パスワードが常に発行される場合、何に問題があると考えられますでしょうか。 全く分かりません、どうかアドバイスをお願い致します。 関連するファイルは以下です。 以下の****の箇所のreminder_answerの箇所が機能していないのだと思われます。 LC_Page_Forgot.php /** * 秘密の質問確認 * * @param array $arrForm フォーム入力値 * @param array $arrReminder リマインダー質問リスト * @return string エラー文字列 問題が無ければNULL */ function lfCheckForgotSecret(&$arrForm, &$arrReminder) { $errmsg = ''; $objQuery =& SC_Query_Ex::getSingletonInstance(); $cols = 'customer_id, reminder, reminder_answer, salt'; $table = 'dtb_customer'; $where = '(email = ? OR email_mobile = ?)' . ' AND name01 = ? AND name02 = ?' . ' AND status = 2 AND del_flg = 0'; $arrVal = array($arrForm['email'], $arrForm['email'], $arrForm['name01'], $arrForm['name02']); $result = $objQuery->select($cols, $table, $where, $arrVal); if (isset($result[0]['reminder']) and isset($arrReminder[$result[0]['reminder']]) and $result[0]['reminder'] == $arrForm['reminder']) { ****if (empty($result[0]['salt'])) { ****// 旧バージョン(2.11未満)からの移行を考慮 ****if ($result[0]['reminder_answer'] == $arrForm['reminder_answer']) { ****$is_authorized = true; ****} ****} ****elseif (SC_Utils_Ex::sfIsMatchHashPassword($arrForm['reminder_answer'], ****$result[0]['reminder_answer'], $result[0]['salt'])) { ****$is_authorized = true; ****} if ($is_authorized) { // 秘密の答えが一致 // 新しいパスワードを設定する $new_password = GC_Utils_Ex::gfMakePassword(8); if (FORGOT_MAIL == 1) { // メールで変更通知をする $objDb = new SC_Helper_DB_Ex(); $CONF = $objDb->sfGetBasisData(); $this->lfSendMail($CONF, $arrForm['email'], $arrForm['name01'], $new_password); } $sqlval = array(); $sqlval['password'] = $new_password; SC_Helper_Customer_Ex::sfEditCustomerData($sqlval, $result[0]['customer_id']); $arrForm['new_password'] = $new_password; } else { // 秘密の答えが一致しなかった $errmsg = '秘密の質問が一致しませんでした。'; } } else { //不正なアクセス リマインダー値が前画面と異なる。 // 新リファクタリング基準ではここで遷移は不許可なのでエラー表示 //SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, '', true); $errmsg = '秘密の質問が一致しませんでした。'; } return $errmsg; } [EC-CUBE]2.12.5 [OS]Linux [PHP]5.3.13 [データベース]MySQL 5.0.67 [WEBサーバ]Apache |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |