SESSIONとCookieの違いがよく分かってなかったので、調べてまとめてみた。
SESSIONとCookieの違い
SESSIONとCookieの違いを解説していく。
結論を簡単に言ってしまうと、SESSIONとCookieの違いは下記のようになる。

SESSION、Cookieともデータを一時的に保有しておくという点では同じ役割を持つ。
だが具体的な違いとして、サーバ側で保有するのかブラウザ側で保存するのかという違いがある。
では次に、SESSIONとCookieの違いについて、より詳細に説明していく。
SESSIONとは
SESSIONとは、サーバ側で保有する、一時的なデータ保存の仕組みのことだ。
ログイン情報など、ユーザーと紐づく情報をサーバー側に一定期間保存しておくことができる。
サーバ側にデータを保存するため、Cookieよりもセキュリティ面で優れている。

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

両者の違いがざっくりと理解できたところで、次に、詳しく両者の使い所を解説していく。
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
SESSION = サーバー側で保有する、一時的なデータ保存の仕組み
Cookie = ブラウザ側で保有する、一時的なデータ保存の仕組み