(PHP) SESSIONとCookieの違い【使い方・使い所なども解説】

(PHP) SESSIONとCookieの違い【使い方・使い所なども解説】

 

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

 

SESSIONとCookieの違い

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

SESSIONとCookieの違い

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

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

cookie-session-difference-image

 

SESSION、Cookieともデータを一時的に保有しておくという点では同じ役割を持つ。

だが具体的な違いとして、サーバ側で保有するのかブラウザ側で保存するのかという違いがある。

 

では次に、SESSIONとCookieの違いについて、より詳細に説明していく。

 

SESSIONとは

SESSIONとは、サーバ側で保有する、一時的なデータ保存の仕組みのことだ。

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

session-image

 

Cookieとは

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

よくオンラインショッピングなどで、一定期間の間、ログイン中のユーザのショッピングカートの中身が保存された状態になっているのは、Cookieが働いてくれているためである。

cookie-image

 

両者の違いがざっくりと理解できたところで、次に、詳しく両者の使い所を解説していく。

 

SESSIONの使い所・使い方




まずはSESSIONの使い所・使い方から。

 

SESSIONが使われる例

SESSIONが使われる例として一番代表的なのはログイン機能だろう。

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

 

なぜSESSIONが必要なのか

webサービスではなぜSESSIONとしてデータを一時的に保存しておく必要があるのだろうか。

それは通常、HTTPプロトコルでは、情報の保持ができないからだ。

GETやPOSTといったHTTPプロトコルでは情報を送ることしかできないため、もし同じユーザであることを画面遷移毎に確認する場合、必ずユーザ情報を送信するようプログラムを組む必要が出てしまう。

しかし、SESSIONとしてデータがサーバに存在していれば、上記のような面倒なことをせずとも、サーバ上のSESSIONデータから情報を取得するだけで、複数画面に渡るwebサービスでも、簡単かつ安全にデータを使い回せると言うことである。

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

 

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

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

session_start();

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

 

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

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

 

 

Cookieの使い所・使い方

次にCookieの使い所・使い方の解説。

 

Cookieとは、詳細

クッキーとは、ブラウザに保存される一時的なデータのことだ。

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

 

Cookieが使われる例

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

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

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

 

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

PHPプログラムからブラウザにクッキーをセットさせる方法は、setcookie()関数で行うことが可能。

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

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

 

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

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

$var = $_COOKIE['クッキー名']

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

 

以上が大体の理解

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

 

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

 

https://www.php.net/manual/ja/session.examples.basic.php

https://www.php.net/manual/ja/features.cookies.php

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

コメントを残す

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