関数・クラス解説

session_destroy

version:PHP 4, PHP 5, PHP 7 (公式)

セッションに登録されたデータを全て破棄する

公式リファレンス

書式

session_destroy ( ) : bool

説明

session_destroy()は、現在のセッションに 関連づけられたすべてのデータを破棄します。この関数は、 セッションに関するグローバル変数を破棄しません。 また、セッションクッキーを破棄しません。 セッション変数の利用を再開するには session_start() をコールする必要があります。

注意: 通常のコードでは、session_destroy() を呼ぶ必要はありません。 セッションデータを破棄するよりも、 $_SESSION 配列をクリーンアップしてください。

セッションを切断するには、 セッション ID の割り当ても解除する必要があります。セッション ID の受け渡しに クッキーが使用されている場合(デフォルト)には、セッションクッキーも 削除されなければなりません。 そのために setcookie() が利用できます。

session.use_strict_mode が有効になっている場合、 古くなった セッションID のクッキーを削除する必要はありません。 なぜなら、セッションモジュールはセッションIDに紐付いたデータがないとき、 セッションID のクッキーを受け入れないからです。 全てのサイトで、 session.use_strict_mode を有効にすることを推奨します。

警告

すぐにセッションを削除してしまうと、 望まない結果が起こる可能性があります。 並列にリクエストが行われたときに、 他のリクエストの接続は突然データが消えたように見えるかもしれません。 たとえば、JavaScript または/もしくは URLリンクからのリクエストが同時に実行された場合です。

現在のセッションモジュールは、空のセッションIDを受け入れません。 しかし、すぐにセッションを削除してしまうと、 クライアント(ブラウザ)サイドとの競合によって、 空のセッションIDクッキーが発生するかもしれません。 これにより、不必要なのにクライアント側が たくさんのセッションIDを作ってしまうことになります。

こうした事象を防ぐためには、 $_SESSION に削除時のタイムスタンプを設定し、 それより後のアクセスを拒否するようにしなければなりません。 もしくは、アプリケーションが同時に 複数のリクエストを受け付けないようにすることです。 同じことは、session_regenerate_id() 関数にも当てはまります。

返値

成功した場合に TRUE を、失敗した場合に FALSE を返します。

注意

注意: $_SESSION を使っていない古いコードでのみ session_unset() を使用するようにしましょう。
警告 すぐにセッションを削除してしまうと、 望まない結果が起こる可能性があります。 並列にリクエストが行われたときに、 他のリクエストの接続は突然データが消えたように見えるかもしれません。 たとえば、JavaScript または/もしくは URLリンクからのリクエストが同時に実行された場合です。 現在のセッションモジュールは、空のセッションIDを受け入れません。 しかし、すぐにセッションを削除してしまうと、 クライアント(ブラウザ)サイドとの競合によって、 空のセッションIDクッキーが発生するかもしれません。 これにより、不必要なのにクライアント側が たくさんのセッションIDを作ってしまうことになります。 こうした事象を防ぐためには、 $_SESSION に削除時のタイムスタンプを設定し、 それより後のアクセスを拒否するようにしなければなりません。 もしくは、アプリケーションが同時に 複数のリクエストを受け付けないようにすることです。 同じことは、session_regenerate_id() 関数にも当てはまります。

サンプル

例1 $_SESSIONでセッションを破棄する

// セッションの初期化 // session_name("something")を使用している場合は特にこれを忘れないように! session_start(); // セッション変数を全て解除する $_SESSION = array(); // セッションを切断するにはセッションクッキーも削除する。 // Note: セッション情報だけでなくセッションを破壊する。 if (ini_get("session.use_cookies")) {     $params = session_get_cookie_params();     setcookie(session_name(), '', time() - 42000,         $params["path"], $params["domain"],         $params["secure"], $params["httponly"]     ); } // 最終的に、セッションを破壊する session_destroy();

参考

  • session.use_strict_mode
  • session_reset() - session 配列を元の値で再初期化します
  • session_regenerate_id() - 現在のセッションIDを新しく生成したものと置き換える
  • unset() - 指定した変数の割当を解除する
  • setcookie() - クッキーを送信する
  • ワード検索


    ※入力キーワードが、関数名・説明文・タグに含まれるものを検索

    関数名アルファベット別

    A B C D E F G H I J
    K L M N O P Q R S T
    U V W X Y Z _

    最終更新一覧

    stristr
     大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

    stripslashes
     バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

    stripos
     大文字小文字を区別せずに文字列が最初に現れる位置を取得する

    stripcslashes
     addcslashes() でクォートされた文字列をアンクォートする

    strip_tags
     文字列から HTML と PHP のタグを除去して返却

    strcspn
     指定した文字が最初に現れる位置を調べる

    strcoll
     ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

    strcmp
     2つの文字列を比較し同じか(あるいは大小)を判定する

    strchr
     strstr() のエイリアス

    strcasecmp
     2つの文字列を比較(大文字小文字を区別せず同じとみなす)

    カテゴリー一覧

    PHP の振る舞いの変更
    音声フォーマットの操作
    認証サービス
    コマンドライン関連
    圧縮およびアーカイブ
    暗号
    データベース関連
    日付および時刻関連
    ファイルシステム
    自然言語および文字エンコーディング
    画像処理および作成
    メール関連
    数学
    テキスト以外の MIME 型
    プロセス制御
    その他の基本モジュール
    その他のサービス
    検索エンジン用の拡張モジュール
    サーバー固有のモジュール
    セッション関連
    テキスト処理
    変数・データ型関連
    ウェブサービス
    Windows 用のモジュール
    XML 操作
    GUI用の拡張モジュール