Example #1
0
 public static function clear()
 {
     if (FALSE === self::$_initialized) {
         // 自動セッションスタート
         self::_init();
     }
     // 8バイト以下の$_COOKIE[self::$_tokenKeyName]はセットされていてもTOKENとして認めない
     if (isset($_COOKIE[self::$_tokenKeyName]) && strlen($_COOKIE[self::$_tokenKeyName]) > 8) {
         // Cookieが在る場合はCookieからトークンと固有識別子を初期化する
         $token = $_COOKIE[self::$_tokenKeyName];
         // SESSIONレコードを走査
         $binds = array(self::$_sessionPKeyName => $token);
         $Session = ORMapper::getModel(self::$_DBO, self::$_sessionTblName, '`' . self::$_sessionPKeyName . '` = :' . self::$_sessionPKeyName . ' limit 1', $binds);
         if (strlen($Session->{self::$_sessionPKeyName}) > 0) {
             // 該当レコードを削除
             $Session->remove();
         }
         // check無しの$identifierの特定
         $identifier = self::_tokenToIdentifier($token, TRUE);
         if (FALSE !== $identifier && strlen($identifier) > 0) {
             // 該当のSessionDataも削除
             parent::clear($identifier);
         }
         debug('cookie clear!');
         // 二度処理しない為に削除する
         unset($_COOKIE[self::$_tokenKeyName]);
         setcookie(self::$_tokenKeyName, '', time() - 3600);
     }
     return TRUE;
 }
 /**
  * セッションデータデーブルからデータを取得し復元する
  * @param string セッションデータのプライマリーキー
  */
 protected static function _initializeData($argPKey)
 {
     if (NULL === self::$_sessionData) {
         $binds = array(self::$_sessionDataPKeyName => $argPKey, 'expierddate' => Utilities::modifyDate('-' . (string) self::$_expiredtime . 'sec', 'Y-m-d H:i:s', NULL, NULL, 'GMT'));
         $Session = ORMapper::getModel(self::$_DBO, self::$_sessionDataTblName, '`' . self::$_sessionDataPKeyName . '` = :' . self::$_sessionDataPKeyName . ' AND `' . self::$_sessionDataDateKeyName . '` >= :expierddate ORDER BY `' . self::$_sessionDataDateKeyName . '` DESC limit 1', $binds);
         if (strlen($Session->{self::$_sessionDataPKeyName}) > 0) {
             self::$_sessionData = json_decode($Session->{self::$_serializeKeyName}, TRUE);
         } else {
             // 配列に初期化
             self::$_sessionData = array();
         }
     }
     return TRUE;
 }