/**
  * 携帯端末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;
 }
예제 #2
0
 /**
  * モバイルサイト用のセッション関連の初期処理を行う。
  *
  * @return void
  */
 function lfMobileInitSession()
 {
     // セッションIDの受け渡しにクッキーを使用しない。
     ini_set('session.use_cookies', '0');
     ini_set('session.use_only_cookies', '0');
     // パラメーターから有効なセッションIDを取得する。
     $sessionId = $this->lfMobileGetSessionId();
     session_start();
     // セッションIDまたはセッションデータが無効な場合は、セッションIDを再生成
     // し、セッションデータを初期化する。
     if ($sessionId === false || !$this->lfMobileValidateSession()) {
         session_regenerate_id();
         $_SESSION = array('mobile' => array('model' => SC_MobileUserAgent_Ex::getModel(), 'phone_id' => SC_MobileUserAgent_Ex::getId(), 'expires' => time() + MOBILE_SESSION_LIFETIME));
         // 新しいセッションIDを付加してリダイレクトする。
         if ($_SERVER['REQUEST_METHOD'] == 'GET') {
             // GET の場合は同じページにリダイレクトする。
             header('Location: ' . $this->gfAddSessionId());
         } else {
             // GET 以外の場合はトップページへリダイレクトする。
             header('Location: ' . TOP_URLPATH . '?' . SID);
         }
         exit;
     }
     // 携帯端末IDを取得できた場合はセッションデータに保存する。
     $phoneId = SC_MobileUserAgent_Ex::getId();
     if ($phoneId !== false) {
         $_SESSION['mobile']['phone_id'] = $phoneId;
     }
     // セッションの有効期限を更新する。
     $_SESSION['mobile']['expires'] = time() + MOBILE_SESSION_LIFETIME;
 }
 /**
  * 携帯のIDを登録する.
  *
  */
 function updatePhoneId()
 {
     $this->setValue('phone_id', SC_MobileUserAgent_Ex::getId());
 }
 /**
  * 会員登録に必要なSQLパラメーターの配列を生成する.
  *
  * フォームに入力された情報を元に, SQLパラメーターの配列を生成する.
  * モバイル端末の場合は, email を email_mobile にコピーし,
  * mobile_phone_id に携帯端末IDを格納する.
  *
  * @param mixed $objFormParam
  * @access private
  * @return $arrResults
  */
 public function lfMakeSqlVal(&$objFormParam)
 {
     $arrForm = $objFormParam->getHashArray();
     $arrResults = $objFormParam->getDbArray();
     // 生年月日の作成
     $arrResults['birth'] = SC_Utils_Ex::sfGetTimestamp($arrForm['year'], $arrForm['month'], $arrForm['day']);
     // 仮会員 1 本会員 2
     $arrResults['status'] = CUSTOMER_CONFIRM_MAIL == true ? '1' : '2';
     /*
      * secret_keyは、テーブルで重複許可されていない場合があるので、
      * 本会員登録では利用されないがセットしておく。
      */
     $arrResults['secret_key'] = SC_Helper_Customer_Ex::sfGetUniqSecretKey();
     // 入会時ポイント
     $CONF = SC_Helper_DB_Ex::sfGetBasisData();
     $arrResults['point'] = $CONF['welcome_point'];
     if (SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE) {
         // 携帯メールアドレス
         $arrResults['email_mobile'] = $arrResults['email'];
         // PHONE_IDを取り出す
         $arrResults['mobile_phone_id'] = SC_MobileUserAgent_Ex::getId();
     }
     return $arrResults;
 }