/** * 有効な管理者ID/PASSかどうかチェックする * * @param string $member_id ログインID文字列 * @param string $member_password ログインパスワード文字列 * @return boolean ログイン情報が有効な場合 true */ protected function checkMemberAccount($member_id, $member_password) { $objQuery =& SC_Query_Ex::getSingletonInstance(); //パスワード、saltの取得 $cols = 'password, salt'; $table = 'dtb_member'; $where = 'login_id = ? AND del_flg <> 1 AND work = 1'; $arrData = $objQuery->getRow($cols, $table, $where, array($member_id)); if (SC_Utils_Ex::isBlank($arrData)) { return false; } // ユーザー入力パスワードの判定 if (SC_Utils_Ex::sfIsMatchHashPassword($member_password, $arrData['password'], $arrData['salt'])) { return true; } return false; }
/** * 携帯端末IDを使用して会員を検索し、パスワードの照合を行う。 * パスワードが合っている場合は会員情報を取得する。 * * @param string $pass パスワード * @return boolean 該当する会員が存在し、パスワードが合っている場合は true、 * それ以外の場合は false を返す。 */ function getCustomerDataFromMobilePhoneIdPass($pass) { //docomo用にデータを取り出す。 if (SC_MobileUserAgent_Ex::getCarrier() == 'docomo') { if ($_SESSION['mobile']['phone_id'] == '' && strlen($_SESSION['mobile']['phone_id']) == 0) { $_SESSION['mobile']['phone_id'] = SC_MobileUserAgent_Ex::getId(); } } if (!isset($_SESSION['mobile']['phone_id']) || $_SESSION['mobile']['phone_id'] === false) { return false; } // 携帯端末IDが一致し、本登録された会員を検索する。 $sql = 'SELECT * FROM dtb_customer WHERE mobile_phone_id = ? AND del_flg = 0 AND status = 2'; $objQuery =& SC_Query_Ex::getSingletonInstance(); @(list($data) = $objQuery->getAll($sql, array($_SESSION['mobile']['phone_id']))); // パスワードが合っている場合は、会員情報をcustomer_dataに格納してtrueを返す。 if (SC_Utils_Ex::sfIsMatchHashPassword($pass, $data['password'], $data['salt'])) { $this->customer_data = $data; $this->startSession(); return true; } return false; }
/** * 秘密の質問確認 * * @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 Like ? OR email_mobile Like ?)' . ' AND name01 Like ? AND name02 Like ?' . ' 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']) { $is_authorized = false; 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; }
/** * 有効な管理者ID/PASSかどうかチェックする * * @param string $login_id ログインID文字列 * @param string $pass ログインパスワード文字列 * @return boolean ログイン情報が有効な場合 true */ function lfIsLoginMember($login_id, $pass) { $objQuery =& SC_Query_Ex::getSingletonInstance(); //パスワード、saltの取得 $cols = "password, salt"; $table = "dtb_member"; $where = "login_id = ? AND del_flg <> 1 AND work = 1"; $arrData = $objQuery->getRow($cols, $table, $where, array($login_id)); if (SC_Utils_Ex::isBlank($arrData)) { return false; } // ユーザー入力パスワードの判定 if (SC_Utils_Ex::sfIsMatchHashPassword($pass, $arrData['password'], $arrData['salt'])) { return true; } return false; }