第8章 リクエスト情報 / 第5回 模擬試験

PHPのセッションを破棄する処理に関する次の記述のうち、正しいものはどれか。

セッションを完全に破棄するには、`$_SESSION`のクリアに加えて`session_destroy()`を呼び出すのが一般的である。 正解
セッションは一度開始すると、プログラムから破棄することは一切できない。
`session_destroy()`はCookie自体を自動的に必ず削除する。
セッションの破棄にはデータベースへの接続が必須である。
解説
セッションを完全に破棄するには、まず`$_SESSION = [];`(または`session_unset()`)でセッション変数の中身をクリアし、そのうえで`session_destroy()`を呼び出してサーバー側に保存されているセッションデータ自体を削除する、という手順が一般的です。 他の選択肢が誤りである理由は次の通りです。 ・セッションは`session_destroy()`などの関数でプログラムから明示的に破棄できます。「一切できない」というのは誤りです。 ・`session_destroy()`はサーバー側のセッションデータを削除するだけで、クライアント側のセッションCookie自体を自動的に削除するわけではありません。Cookieも確実に削除したい場合は、別途Cookieの有効期限を過去にする処理が必要です。 ・セッションの破棄はサーバー側のファイル等に保存されたデータを削除する処理で、データベースへの接続は必須ではありません。 例: ``` session_start(); $_SESSION = []; session_destroy(); ``` (参照: 独習PHP 第4版 第8章 リクエスト情報 8.7.3節 セッションを破棄する p.391〜393)