【6日でできるPHP入門】クッキーとセッション

 Webアプリケーションでは「ユーザーがどんな行動をしたか」「どのページを見ているか」など、ユーザーごとに情報を記憶するしくみが欠かせません。その代表的な方法がクッキー(cookie)セッション(session)です。
どちらも「一時的に情報を保存しておく」という目的は共通していますが、保存場所や使い方に大きな違いがあります。

 この記事ではクッキーとセッションの違い・仕組み・連携方法、そして実際のPHPプログラム例を用いて詳しく解説します。

1.クッキーとセッションの基本

1.1. クッキーとセッションの違いを整理

仕組み保存場所保存タイミング主な用途
クッキーブラウザ(ユーザー端末)任意期間(設定による)ログイン状態、IDの保持など
セッションサーバブラウザを閉じるまで等買い物カゴ、会員状態の管理など

クッキーはユーザーの端末(ブラウザ)に情報を保存します。
セッションはサーバ側で管理され、ユーザーごとに一時的な情報を保持します。

1.2. それぞれの特徴と連携のイメージ

特徴クッキーセッション
保存される場所クライアント(PCやスマホ等)サーバ上
有効期限指定可能(1日、1年など)通常はブラウザ終了で破棄
セキュリティユーザーが編集・閲覧できてしまうサーバ側管理なので高め
典型的な使い方ログインIDの保持、言語設定などログイン状態、カートの中身など

2.PHPでのクッキーとセッション利用例

2.1. クッキーの基本的な使い方

PHPでクッキーを設定・取得するにはsetcookie()$_COOKIEを使います。

例:ユーザー名をクッキーに保存し、再訪時に挨拶する

ファイル名: lesson61_1.php

<?php
// ユーザー名をクッキーに保存(1時間有効)
setcookie('user_name', 'さくら', time() + 3600);

// クッキーが存在すれば挨拶
if (isset($_COOKIE['user_name'])) {
    echo "こんにちは、{$_COOKIE['user_name']}さん!<br>";
} else {
    echo "初めまして!<br>";
}
?>

出力例(2回目以降のアクセス時)

2.2. セッションの基本的な使い方

セッションはsession_start()で開始し、$_SESSION配列で値を管理します。

例:訪問回数をセッションでカウントする

ファイル名: lesson61_2.php

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

// セッションに「visit_count」がなければ初期化
if (!isset($_SESSION['visit_count'])) {
    $_SESSION['visit_count'] = 1;
    echo "はじめての訪問ですね。";
} else {
    $_SESSION['visit_count']++;
    echo "あなたの訪問回数:{$_SESSION['visit_count']}回目です。";
}
?>

出力例(2回目以降のアクセス時)


3.クッキーとセッションの連携・実用例

3.1. ログイン情報の記憶

 多くのWebサービスでは「次回も自動ログイン」を実現するため、クッキーにログインIDを保存し、セッションで認証状態を管理します。

イメージ例(フロー)

  1. ログインフォームでID/パスワードを送信
  2. 認証成功→ユーザーIDをセッションに保存、IDをクッキーにも保存
  3. 次回訪問時、クッキーのIDを自動入力欄に表示&セッションで認証確認
項目保存場所役割例
ユーザーIDクッキー入力補助・再訪問時の利便性
認証状態セッションサイト利用中の認証状態管理

まとめ

  • クッキーは「ユーザーの端末に情報を残す」ための仕組み、セッションは「サーバ上で一時的にユーザー情報を管理」するための仕組みです。
  • クッキーは便利な反面、ユーザー自身で削除・改ざんが可能なので機密情報の保存には注意が必要です。
  • セッションはセキュリティ面で優れますが、ブラウザを閉じると基本的に情報が消えるため、状況によって使い分けが必要です。
  • これらを組み合わせることで、Webアプリの利便性と安全性が大きく向上します。

PHPでは

  • setcookie()/$_COOKIEでクッキー管理
  • session_start()/$_SESSIONでセッション管理
    が基本です。

実際のWeb開発ではこの両者を状況に応じて使い分けましょう。