関数の概要
session_destroy は、現在のセッションを完全に終了し、サーバー側に保存されたセッションデータを削除するためのPHP関数です。ユーザーがログアウトする際やセッション情報をクリアしたい場合に使われます。ブラウザのクッキーはこの関数によって削除されませんが、セッションIDに紐づくデータはすべて消去されます。
パラメータの説明
- この関数はパラメータを受け取りません。
戻り値
成功すると TRUE を返し、失敗すると FALSE を返します。通常はセッションが開始されている場合に成功しますが、開始されていないと失敗することがあります。
使用例
基本的な使い方
<?php
session_start();
$_SESSION['username'] = 'yamada';
// セッションを破棄
session_destroy();
?>
セッションを開始し、値を設定した後に session_destroy() を呼び出すことでセッションデータを削除します。ただし、この状態でも$_SESSIONの変数はすぐには消えないため、明示的にクリアすることも推奨されます。
セッション変数もクリアする例
<?php
session_start();
// セッション変数を全てクリア
$_SESSION = array();
// セッションIDのクッキーも削除(クッキー存在時)
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の内容も空にし、さらにブラウザのクッキーに残ったセッションIDまで削除して完全にクリアする方法です。ログアウト処理などでよく用いられます。
条件付きでセッション破棄する例
<?php
session_start();
if (isset($_SESSION['logged_in']) && $_SESSION['logged_in'] === true) {
// ログインしていればセッションを破棄しログアウト
session_destroy();
echo 'ログアウトしました。';
} else {
echo 'ログインしていません。';
}
?>
ログイン状態を判定してからセッションを破棄する例です。状態に応じて処理を分けたい場合に便利です。
関連する関数
session_start()– セッションを開始する。session_unset()– セッション変数をすべて解除する。session_regenerate_id()– セッションIDを再生成し、セキュリティを向上させる。setcookie()– セッションクッキーを削除する際に併用される。
まとめ
session_destroy() はPHPでセッションを完全に削除するための基本的な関数です。ただし、セッション変数やセッションIDのクッキーも別途クリアしないとブラウザ側に情報が残る場合があるため、実務では併せてクリア処理を実装することが一般的です。ログアウト機能やセッションの終了処理に必須の関数として覚えておきましょう。
