PHP セッションとクッキーの違いと連携の仕組みを解説

クッキーとセッションの意味と連携について、簡単に整理します。

目次

クッキーとセッションとは

クッキー

クッキーとは、Webサイトに関連する情報をユーザーのブラウザに保存する仕組みです。

たとえば、SNSやECサイトで一度ログインしたあと、次回アクセス時にIDやパスワードを入力しなくてもログイン状態が維持されていることがあります。

これは、前回のログイン情報がクッキーとしてブラウザに保存されているためです。

セッション

セッションとは、Webサーバー側に情報を一時的に保存し、複数のページ間でその情報を共有する仕組みです。

たとえば、ECサイトのカート機能では、商品ページを移動しても追加した商品情報を保持し続ける必要があります。
このような場合にセッションを利用することで、ページをまたいでデータを保持・共有することが可能になります

なお、セッションには生成時にセッションIDと呼ばれる一意の識別子が割り振られ、ユーザーごとのセッション情報が区別されます。

クッキーとセッションの連携

Webアプリでは、クッキーとセッションを組み合わせてユーザーの状態を管理します。

たとえば、ECサイトでIDとパスワードを入力してログインすると、以下の流れで連携が行われます。

  1. サーバーがセッションIDを発行し、セッション情報を保存
  2. このセッションIDがクッキーとしてユーザーのブラウザに保存される

次回以降のアクセス時、ブラウザは保存されたセッションIDを自動的にサーバーへ送信します。

サーバー側はこのIDをもとにユーザーのセッションを特定し、たとえばログイン状態を維持したり、カートの中身を復元したりすることができます。

また、SNSのように複数のユーザーが同時にアクセスする場面でも、それぞれに異なるセッションIDが割り振られるため、ユーザーごとの状態を正しく区別・管理できるようになっています。

PHPでセッションを利用する

セッションを利用するサンプルです。

sample1.php(セッションの値をセット)

session_start(); // セッション開始

// セッションに値をセット
$_SESSION["data"] = "PHP";

// セッションIDの表示
echo "<h1>セッションの値の生成</h1>";
echo "<p>セッションID: " . session_id() . "</p>";
echo "<p>設定した値: " . $_SESSION["data"] . "</p>";

// 次のページへのリンク
echo '<a href="sample2.php">次へ</a>';

sample2.php(セッションの値を確認)

session_start(); // セッション開始

echo "<h1>セッションの値の確認</h1>";
echo "<p>セッションID: " . session_id() . "</p>";

if (isset($_SESSION["data"])) {
    echo "<p>セッションに保存された値: " . $_SESSION["data"] . "</p>";
} else {
    echo "<p>セッションの値は設定されていません。</p>";
}

echo '<a href="sample1.php">戻る</a>';

実行結果(sample1.php)

セッションの値の生成
セッションID: cf9d6e1a3e4f56b8e9d75c1234567890
設定した値: PHP

次へ

実行結果(sample2.php)

セッションの値の確認
セッションID: cf9d6e1a3e4f56b8e9d75c1234567890
セッションに保存された値: PHP

戻る

このコードの流れ

最初のページを開くと、session_start関数によってサーバー上に新しいセッションが作成され、そこに接続されます。

その結果セッションIDが割り振られ、ブラウザにクッキー(PHPSESSID)として保存されます。

セッションIDは、ブラウザの検証ツールの「アプリケーション」>「Cookie」から確認できます。

その後、$_SESSION["data"]"PHP"という文字列が代入されてサーバーに保存されます。

次のページに移動すると、ブラウザは保存しているセッションID(クッキー)をサーバーに送信します。

サーバーはそのIDを使って対応するセッションデータを見つけ出し、$_SESSION["data"] に保存された値(「PHP」)を取り出して利用できます。

このように、ページを移動しても同じユーザーの情報を保持し続けることが可能になります。

主な関数の説明

session_start()は、ページの最初でセッションを開始するための関数です。
すでにセッションIDがある場合はそれを使い、なければ新しいIDが発行されます。

session_id()は、現在のセッションIDを取得する関数です。
このIDはユーザーごとに発行され、サーバー側のセッションデータを識別するために使われます。

$_SESSIONは、セッションのデータを保存・取得するための連想配列です。
値を代入するとサーバーに保存され、ページを移動してもその値を保持できます。

セッション全体を削除(ログアウトなど)したい場合

session_start();         // セッションを開始
$_SESSION = array();     // セッション変数を空にする
session_destroy();       // セッション自体を破棄

セッションとクッキーまとめ

セッションとクッキーは、それぞれ役割が異なりながらも、連携させることでより柔軟なユーザー管理が可能になります。

今回のサンプルコードを通じて、実際の動作や仕組みがイメージしやすくなれば幸いです。

おすすめWEBスクール

WEB制作やWEBデザインを学びたいなら、SNSでも話題の「デイトラ」がおすすめ!
どのコースも10万円前後と業界最安値で、副業や転職に向けて十分なスキルを身につけることができます。

役に立ったら他の方にシェア

お気軽にコメントどうぞ

コメントする

目次