聞かれたときにパッと答えられなかったので備忘録として
PHPで言うセッション($_SESSION
)とクッキー($_COOKIE
)の違いは
セッションとは
PHP公式の説明だと
PHPのセッションサポート機能は、複数回のアクセスを通じて特定のデータを保持する手段を実現するものです。
Web サイトの訪問者にはセッションIDというセッションIDと呼ばれるユニークなIDが割りつけられ ます。このIDは、ユーザー側にクッキーとして保存するか、または、URL に埋め込みます。
要は「セッションID」をクッキーorURLに持たせて、その「セッションID」をキーにサーバーにデータを保存しています。(デフォルトだと「セッションID」はクッキーに持たせている)
MAMPのphp.iniの設定では、下記にセッションのデータが残っているはずです
session.save_path = /Applications/MAMP/tmp/php
「セッションID」はデフォルトで「PHPSESSID」としてクッキーに保存しているので、試しに下記を実行するとアクセスしているユーザーのセッションが全部消えるはずです(消えると言うより取得できなくなる。サーバー側に残っちゃう)
setcookie('PHPSESSID', '');
セッションの詳しい設定は下記に載っています
https://www.php.net/manual/ja/session.configuration.php
クッキーとは
PHP公式の説明だと
PHP は、HTTP クッキー(Cookie)を完全にサポートします。 クッキーは、リモートブラウザに文字列データを保存したり、 再訪するユーザーを特定したりする機構です。
要はHTTPクッキーそのものです。HTTPクッキーはブラウザ側にキーと値のペアで保存されるデータです。
HTTP Cookie (ウェブ Cookie、ブラウザー Cookie) は、サーバーがユーザーのウェブブラウザーに送信する小さなデータであり、ブラウザーに保存され、その後のリクエストと共に同じサーバーへ返送されます。
https://developer.mozilla.org/ja/docs/Web/HTTP/Cookies
まとめ
- セッションはブラウザ+サーバー側で持ってるデータ
- クッキーはブラウザ側で持ってるデータ
ただしこの話はPHPの話であって
一般的に言われる「セッション」もこうとは限らないです!
一般的に言われる「クッキー」はHTTPクッキーのことと思ってもらっても大丈夫です。