第8章 リクエスト情報 / 第5回 模擬試験
PHPの`$_SESSION`を使ったセッション情報の読み書きに関する次の記述のうち、正しいものはどれか。
`$_SESSION['key'] = 'value';`のように、通常の配列と同じ操作でセッションにデータを保存できる。
正解
セッションへの書き込みには、専用の`session_write()`関数を必ず呼び出す必要がある。
`$_SESSION`はページを再読み込みするとリセットされ、必ず空になる。
セッションは1つのブラウザにつき無制限に作成でき、削除する方法は存在しない。
解説
`session_start()`を呼んだ後は、`$_SESSION['key'] = 'value';`のように、通常の連想配列と同じ書き方でセッションにデータを保存・読み取りできます。特別な専用関数を呼ぶ必要はありません。
他の選択肢が誤りである理由は次の通りです。
・セッションへの書き込みに`session_write()`のような専用関数は存在しません。`$_SESSION`配列への代入がそのまま書き込みになります。
・`$_SESSION`はページを再読み込みしてもリセットされません。同じセッションIDを持つブラウザからのアクセスであれば、保存した内容はサーバー側に保持され続けます。
・セッションは`session_destroy()`などで明示的に削除できます。「削除する方法は存在しない」というのは誤りです。
例:
```
session_start();
$_SESSION['user_id'] = 1; // 書き込み
echo $_SESSION['user_id']; // 読み取り(別ページでも保持される)
```
(参照: 独習PHP 第4版 第8章 リクエスト情報 8.7.1節 基本的なセッション情報の読み書き p.387〜388)