第8章 リクエスト情報 / 第1回 模擬試験
PHPのクッキーとセッションに関する次の記述のうち、誤っているものはどれか。
クッキーはクライアント側のブラウザに保存される。
セッションはサーバ側にデータを保存し、セッションIDで管理する。
クッキーは、`setcookie()`関数で設定できる。
セッションは、ブラウザを閉じてもデータが保持される。
正解
解説
セッションは、既定の設定ではブラウザを閉じるとセッションCookie(有効期限を指定しないCookie)が破棄され、サーバ側のセッションIDとの対応も失われます。「ブラウザを閉じてもデータが保持される」という記述は誤りです。ログイン状態を長期間保持したい場合は、別途「remember me」用のCookieなどを使う必要があります。
他の選択肢が正しい理由は次の通りです。
・クッキーは`Set-Cookie`ヘッダーによってクライアント(ブラウザ)側に保存され、以降のリクエストで自動的に送信されます。
・セッションはデータ自体をサーバ側(既定ではファイル)に保存し、クライアントにはセッションIDのみをCookie等で持たせて紐づけます。
・`setcookie()`関数で、名前・値・有効期限などを指定してクッキーを設定できます。
例:
```
session_start();
$_SESSION['user_id'] = 1;
setcookie('remember_token', $token, time() + 60 * 60 * 24 * 30);
```
(参照: 独習PHP 第4版 第8章 リクエスト情報 8.6節, 8.7節 p.381〜395)