PHP Manual

基本的な使用法

セッションは、シンプルな方法で個々のユーザーのデータを格納する仕組みで、 個々のユーザーに対して一意なセッション ID を用意します。 これを用いて、複数ページにまたがるリクエストの間で状態の情報を永続させることができます。 セッション ID をブラウザに送信するときには、通常はセッションクッキーを利用します。 また、その ID を使って既存のセッションデータを取得します。 その ID やセッションクッキーが存在しなければ PHP に対して新たなセッションを作るよう伝え、 新たなセッション ID を生成します。

セッションの処理の流れは単純です。セッションを開始すると、 PHP はまず、(通常はセッションクッキーから受け取る) ID を使って既存のセッションを取得しようとします。 ID を受け取らなかった場合は新しいセッションを作成します。 セッションを開始すると、PHP はスーパーグローバル $_SESSION にすべてのセッションデータを格納します。PHP スクリプトの処理が終了するときには、 スーパーグローバル $_SESSION の中身を自動的に受け取ってシリアライズし、 ストレージに送信します。この一連の操作にはセッション保存ハンドラを使います。

デフォルトでは、PHP が使う保存ハンドラは files です。これは session.save_handler で設定します。 このハンドラは、サーバー上の session.save_path で指定した場所にセッションデータを保存します。

セッションを手動で開始するには session_start() 関数を使います。 session.auto_start1 を設定している場合は、 PHP が出力バッファに何かを出力するときに自動的にセッションを開始します。

通常は、PHP がスクリプトの処理を終了するときに、セッションは自動的に終了します。 手動でセッションを終了させるには session_write_close() 関数を使います。

例1 $_SESSIONで変数を登録

<?php
session_start
();
if (!isset(
$_SESSION['count'])) {
  
$_SESSION['count'] = 0;
} else {
  
$_SESSION['count']++;
}
?>

例2 変数を $_SESSION から削除する

<?php
session_start
();
unset(
$_SESSION['count']);
?>

警告

unset($_SESSION)によって 全ての$_SESSIONを初期化してはいけません。 $_SESSIONスーパーグローバル変数を用いた セッション変数の登録ができなくなってしまうからです。

警告

セッション変数において参照を使用することはできません。 他の変数への参照を復元する方法がないからです。


PHP Manual