0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PHPで言うセッションとクッキーの違い

Posted at

聞かれたときにパッと答えられなかったので備忘録として

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クッキーのことと思ってもらっても大丈夫です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?