第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)