session_destroy

関数の概要

PHPの session_destroy 関数は、現在のセッションを完全に削除し、セッションデータをすべて破棄するための関数です。セッションを終了させたい時や、ユーザーのログアウト処理などでセッション情報をクリアしたい場合に使用されます。

パラメータの説明

  • なし
    session_destroy はパラメータを一切取らず、呼び出すだけでセッションの破棄を行います。

戻り値

session_destroy は処理が成功した場合に true を返し、失敗した場合には false を返します。通常はセッションが正しく開始されていれば成功しますが、セッションが存在しない場合は失敗することがあります。

使用例

基本的な使い方

<?php
session_start();          // セッション開始
$_SESSION['user'] = 'Taro'; // セッション変数に値をセット

// セッションを破棄する
session_destroy();
?>

この例では、セッションを開始して値を設定後、session_destroy でセッション全体を削除しています。

ログアウト処理の実例

<?php
session_start();

// ユーザーデータのセッションがあるか確認
if (isset($_SESSION['user'])) {
    // セッション変数をすべてクリア
    $_SESSION = array();

    // セッションクッキーを削除
    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_destroy を実行しています。これによりクライアント側とサーバー側両方からセッションデータを消去できます。

セッション再利用前に破棄する例

<?php
session_start();
echo '現在のユーザー: ' . ($_SESSION['user'] ?? '未ログイン') . "<br>";

// セッションを完全にリセットしたい場合
session_destroy();

session_start(); // 新しいセッションを開始
$_SESSION['user'] = 'NewUser';
echo '新しいユーザー: ' . $_SESSION['user'];
?>

この例は、現在のセッションを一旦破棄し、新たにセッションを開始して別のユーザー情報をセットする流れを示しています。

関連する関数

  • session_start() : セッションの開始
  • session_unset() : セッション変数の全削除(ただしセッション自体は継続)
  • session_regenerate_id() : セッションIDの再生成
  • setcookie() : クッキーの削除に利用(セッションIDクッキーの消去)

まとめ

session_destroy はPHPセッションを完全に消去したい時に使う重要な関数です。セッション情報を初期化するだけでなく、ユーザーのログアウトなど安全にデータを破棄したい場面で便利です。ただし実際には、session_destroy だけでなくセッション変数のクリアやクッキーの削除も併用することで、より確実なセッション終了処理が実現できます。