バックエンド

セッションとクッキーをPHPで扱う方法【初心者向け解説】

PHPでユーザーのデータを一時的に保存する方法として、「セッション」と「クッキー」があります。どちらもウェブアプリケーションで重要な役割を果たしますが、使い方や用途には違いがあります。

この記事では、セッションとクッキーの基本的な仕組みから実践的な使い方まで、わかりやすく解説します。

セッションとクッキーの違い

まず、セッションとクッキーの違いを簡単に説明します。

セッションとは?

セッションは、サーバー側でユーザー情報を管理する仕組みです。ユーザーごとにセッションIDが発行され、このIDを使ってデータを紐付けます。

  • 特徴:
    • サーバーでデータを保存する
    • ユーザーにはセッションIDのみ渡す
    • セキュリティ面でクッキーより優れている

クッキーとは?

クッキーは、**クライアント側(ブラウザ)**にデータを保存する仕組みです。ユーザーが再度ウェブサイトを訪れる際に、クッキーの内容がサーバーに送信されます。

  • 特徴:
    • データをブラウザに保存する
    • 小さなデータ(約4KBまで)の保存に適している
    • ユーザー側でデータが見えるため、セキュリティに注意が必要

PHPでセッションを扱う方法

セッションを使う際は、必ず**session_start()**を呼び出します。これによりセッションが開始され、サーバーにデータを保存できます。

セッションの基本コード例

以下は、セッションを使った基本的なコード例です。

phpコードをコピーする<?php
// セッションの開始
session_start();

// データをセッションに保存
$_SESSION['username'] = 'John Doe';
$_SESSION['user_id'] = 123;

// セッションからデータを取得
echo 'ユーザー名: ' . $_SESSION['username'];

セッションの削除

セッションデータを削除する場合は、以下のコードを使用します。

phpコードをコピーする<?php
session_start();

// セッションデータを削除
session_unset(); // データをクリア
session_destroy(); // セッションを破棄

PHPでクッキーを扱う方法

クッキーは**setcookie()**関数を使用して設定します。ブラウザに保存されるため、ユーザーが次回アクセスしたときにもデータを参照できます。

クッキーの基本コード例

以下は、クッキーを使った基本的なコード例です。

<?php
// クッキーを設定(有効期限は1時間後)
setcookie('username', 'John Doe', time() + 3600);

// クッキーの値を取得
if (isset($_COOKIE['username'])) {
echo 'ユーザー名: ' . $_COOKIE['username'];
}

クッキーの削除

クッキーを削除する場合は、有効期限を過去の日付に設定します。

<?php
// クッキーを削除
setcookie('username', '', time() - 3600);

セッションとクッキーを使い分けるポイント

セッションとクッキーには、それぞれ得意な場面があります。

  • セッションを使うべき場合:
    • 敏感なデータを扱う場合(例: ログイン情報)
    • サーバー側でデータを管理したい場合
  • クッキーを使うべき場合:
    • ユーザーの端末に保存しても問題のないデータ(例: ユーザーの言語設定やテーマ設定)
    • データの永続性が必要な場合

セキュリティ上の注意点

セッションでの注意点

  1. セッションIDの保護:
    • HTTPSを利用する
    • セッションIDの再生成(session_regenerate_id()
  2. セッションハイジャックの防止:
    • サーバー側でIPアドレスやユーザーエージェントを確認

クッキーでの注意点

  1. データの暗号化:
    • クッキーに保存するデータは暗号化する
  2. HTTPOnlyとSecure属性の設定:
    • HttpOnlyを設定してJavaScriptからのアクセスを防止
    • HTTPSを利用してSecure属性を設定

まとめ

セッションとクッキーはPHPでユーザー情報を管理するための基本技術です。それぞれの特徴や使い方を理解し、適切に使い分けることで、安全で便利なウェブアプリケーションを構築できます。

キーポイント

  • セッションはサーバー側、クッキーはクライアント側でデータを管理
  • セッションはセキュリティが重要なデータに適し、クッキーは永続性が必要なデータに適している
  • セキュリティ対策を忘れずに!

関連リンク

-バックエンド
-