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;
 }