第8章 リクエスト情報 / 第2回 模擬試験
PHPのセッションに関する次の記述のうち、誤っているものはどれか。
セッションを開始するには`session_start()`を呼び出す。
セッションのデータは`$_SESSION`スーパーグローバル変数に格納する。
セッションを破棄するには`session_destroy()`を使用する。
セッションIDは常にURLパラメータとしてのみ送信される。
正解
解説
セッションIDは、通常はブラウザに保存されるCookie(既定では`PHPSESSID`という名前)を通じてやり取りされます。Cookieが無効な環境向けに、`session.use_trans_sid`を有効にするとURLパラメータでセッションIDを引き継ぐ設定も可能ですが、これは代替手段であり「常にURLパラメータのみ」というのは誤りです。
他の選択肢が正しい理由は次の通りです。
・`session_start()`を呼び出すことでセッションが開始(または既存セッションが再開)されます。
・セッション中に保持したいデータは`$_SESSION`スーパーグローバル配列に格納します(例: `$_SESSION['user_id'] = 1;`)。
・セッションを完全に破棄するには`session_destroy()`を呼び出します(`$_SESSION`配列自体をクリアするには合わせて`session_unset()`や`$_SESSION = [];`も使われます)。
例:
```
session_start();
$_SESSION['user_id'] = 1;
// ログアウト処理
session_unset();
session_destroy();
```
(参照: 独習PHP 第4版 第8章 リクエスト情報 8.7節 セッション情報 p.387〜395)