/**
  * 有効な管理者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;
 }
예제 #4
0
 /**
  * 有効な管理者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;
 }