【6日でできるPHP入門】PHPでセッションを利用する

 Webアプリケーションでは、複数ページにわたって同じユーザーの情報を保持する必要がよくあります。たとえば、ログイン状態の維持やショッピングカートの中身、ウィザード形式の入力内容などです。PHPでは「セッション」という仕組みを使うことで、ページをまたいで安全にデータを保持できます。

 この記事では、PHPのセッション機能の基本や仕組み、サンプルプログラムを使った具体的な使い方をわかりやすく解説します。

1.セッションの基本と特徴

1.1. セッションの仕組み

用語説明
セッションユーザーごとに一時的なデータをサーバで保存する仕組み。
セッションID各ユーザーのセッションを識別するための一意なID
$_SESSIONセッション情報を扱うPHPのスーパーグローバル変数
  • セッションIDは、PHPが自動生成し、クッキーやURLパラメータでやりとりされます。
  • セッション変数は連想配列$_SESSIONで扱います。

1.2. セッションと他の仕組みの違い

仕組み保存場所主な用途有効期限
セッションサーバ認証情報、カート情報など通常はブラウザ終了時
クッキーユーザーの端末ID保存、言語設定など任意に設定可能

2.PHPでのセッション利用例

ここでは2ページ間で値を保持するセッションの例を紹介します。

2.1. セッション値の保存ページ

ファイル名: set_session.php

<?php
session_start(); // セッション開始
$_SESSION["favorite_color"] = "青";
echo "<h2>セッションの設定ページ</h2>";
echo "セッションID:" . session_id() . "<br>";
echo "好きな色を設定しました。<br>";
echo "<a href='show_session.php'>好きな色を表示</a>";
?>

出力例

2.2. セッション値の参照ページ

ファイル名: show_session.php

<?php
session_start();
echo "<h2>セッションの参照ページ</h2>";
echo "セッションID:" . session_id() . "<br>";
if (isset($_SESSION["favorite_color"])) {
    echo "好きな色は「{$_SESSION["favorite_color"]}」です。<br>";
} else {
    echo "好きな色はまだ設定されていません。<br>";
}
echo "<a href='set_session.php'>設定ページへ戻る</a>";
?>

出力例

2.3. プログラムの流れとポイント

  1. 最初のページ(set_session.php)
    session_start()でセッションを開始。
    $_SESSION["favorite_color"]に値を保存。
    ③セッションIDを表示。
  2. リンクで別ページ(show_session.php)へ遷移
    ①再度session_start()を実行し、同じセッションにアクセス。
    ②セッションIDが一致し、$_SESSION["favorite_color"]の値も取得可能。

ポイント

  • セッションIDが同じならページ間でデータを共有できる。
  • ブラウザを閉じるか、session_destroy()を使うとセッションは消える。

3.セッションの管理と注意点

3.1. セッションの初期化と破棄

関数説明
session_start()セッションの開始・再開(必ず最初に呼ぶ)
session_id()現在のセッションIDを取得
$_SESSION["キー"]セッションデータの保存・取得
session_destroy()セッションの完全削除(ログアウトなどで利用)

例:セッションの破棄

ファイル名: destroy_session.php

<?php
session_start();
session_destroy();
echo "セッションを削除しました。";
?>

実行結果

3.2. セッション利用時のセキュリティ注意点

  • パスワードや個人情報は不用意に保存しない。
  • 必要がなくなったらsession_destroy()で破棄する。
  • セッションIDの漏洩対策としてSSL(https)を推奨。

まとめ

  • PHPのセッションは、ユーザーごとにサーバ上で情報を管理できる強力な仕組みです。
  • session_start()$_SESSIONでページをまたいで値を保持・取得できる。
  • ログイン状態やカート、ウィザード式入力など、さまざまな場面で活用できる。
  • セッション管理時はセキュリティ面にも注意しましょう。

PHPでのセッションの使い方をマスターし、Webアプリの実装に役立ててください!