(PHP) SESSIONとCookieの違いを理解する

session-cookie

 

SESSIONとCookieの違いがよく分かってなかったので、調べてまとめてみた。

 

SESSIONとCookieの違い

SESSIONとCookieの違いを解説していく。
結論を簡単に言ってしまうと、下記のようになる。

SESSIONとCookieの違い

SESSION = サーバー側で保有する、一時的なデータ保存の仕組み

Cookie = ブラウザ側で保有する、一時的なデータ保存の仕組み

cookie-session-difference-image

SESSION、Cookieともデータを一時的に保有しておくという点では同じ役割を持つ。
サーバ側で保有するのかブラウザ側で保存するのかという違いがある。

 

SESSIONとは

サーバ側で保有する、一時的なデータ保存の仕組みのこと。
ログイン情報など、ユーザーと紐づく情報をサーバー側に一定期間保存しておくことができる。
サーバ側にデータを保存するため、Cookieよりもセキュリティ面で優れている。

session-image

 

Cookieとは

ブラウザ側で保有する、一時的なデータ保存の仕組みのこと。
よくオンラインショッピングなどで、一定期間の間、ログイン中のユーザのショッピングカートの中身が保存された状態になっているのは、Cookieが働いているためである。

cookie-image

 

SESSIONについて詳しく

両者の違いがざっくりと理解できたところで、詳しく両者を解説していく。
まずはSESSIONの解説から。

 

SESSIONとは、詳細

セッションとは、webサイトにアクセスしてから出ていくまでの一連の行動のこと。
ブラウザ自体が閉じられても一セッション。

 

SESSIONが使われる例

一番代表的なのはログイン機能。

ユーザIDやパスワード情報をサーバ側にSESSIONとして保存しておくことで、
複数ページにわたるwebサービスでも同じ値を使い回すことができる

 

なぜSESSIONが必要なのか

通常、HTTPプロトコルでは、情報の保持ができない
GETやPOSTで情報を送ることしかできない。

しかし、同じユーザとしてずっとログインできるのはこのセッションがあるからだ。

ちなみに筆者は開発現場でSESSIONを知らず、毎回パスワードやユーザIDをPOSTするよう実装しようとしてご指摘を受けた過去がある。

 

PHPでのSESSIONは、$_SESSION変数で扱う

抽象的なことしか言ってないが、実際にPHPでSESSIONを扱う方法は以下

session_start();

$_SESSION['キー名'] = バリュー;

 

session_start();は、セッションを使うお決まりの文句。
セッションを使うプログラムソースなら必ず書く。

んで、スーパグローバル変数$_SESSIONにキーと値を代入すればOK。

 

 

Cookieについて詳しく

次にCookieの解説。

 

Cookieとは、詳細

クッキーとは、ブラウザに保存される一時的なデータのことだ。
セッションと違い、ブラウザを閉じても大丈夫。
クッキーで設定された時間内であればずっとブラウザに情報は残り続ける。

 

Cookieが使われる例

同じくログイン機能と合わせて使われることが多いと思う。

例えばログイン機能があるwebサービス。
最初はログインするけど、その後頻繁にアクセスしている場合は、毎回ユーザIDとパスワード入れずとも、自動でログインされてしまうはずだ。これはブラウザに保存されているあなたのユーザIDとパスワードなどの情報(Cookie)がプログラムで自動的に読み取られ、勝手にプログラム側でログイン処理をしてくれているからだ。

久しぶりにアクセスしたwebサイトでログインを求められるのはよくあることだが、これはブラウザがCookie情報を時間切れで失っているからだ。

 

phpでのCookieのセット方法 (setcookie();)

プログラムからブラウザにクッキーをセットさせる方法は、以下の関数で完結。

setcookie(クッキー名, 値, 保存期間, [以下オプションは省略]);

上記の関数でブラウザにクッキー情報を保存させることができる

 

phpでのCookieの取得方法 ($_COOKIE)

プログラムからブラウザのクッキー情報を取得する方法は、以下。

$_COOKIE['クッキー名']

 

スーパグローバル変数$_COOKIEに、setcookie()関数でセットしたクッキー名を、キーに指定してあげれば、値が取得可能。

 

以上が大体の理解

多分ここまで理解できればググりつつならphpでSESSIONもCookieも使えると思う。

 

大事な機能なので、自分も忘れないようにしたい。

 

記事が気に入った方はシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。