session_reset

関数の概要

PHPの session_reset 関数は、開始済みのセッションに保存されているデータを最新の情報で再読み込みし、$_SESSION グローバル変数をセッションストレージにある状態にリセットします。これにより、現在のスクリプト実行中に $_SESSION への変更が破棄され、元のセッションデータに戻ります。

パラメータの説明

  • なし
    session_reset は引数を取りません。

戻り値

セッションが正しくリセットできた場合は true を返します。セッションが開始されていなかったり、エラーが発生した場合は false を返します。

使用例

基本的な使い方

<?php
session_start();
$_SESSION['user'] = 'taro';

// ローカルの$_SESSIONを変更
$_SESSION['user'] = 'hanako';

// セッションデータを元に戻す
session_reset();

echo $_SESSION['user']; // 結果は 'taro'
?>

現在のスクリプトで $_SESSION[‘user’] を ‘hanako’ に一時的に変更しましたが、session_reset() を呼ぶことでセッションストレージの値 ‘taro’ に戻りました。

POST処理とセッションの再読み込み

<?php
session_start();

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $_SESSION['form_data'] = $_POST['data'];
} else {
    // セッションの変更をキャンセルして直前の状態に戻したい
    session_reset();
}

echo htmlspecialchars($_SESSION['form_data'] ?? 'データなし');
?>

POSTで受け取ったデータを$_SESSIONにセットした後、何かの条件でキャンセルしたい場合にsession_reset()を使って、フォーム送信前のセッション状態に戻しています。

セッションの変更を取り消す例

<?php
session_start();
$_SESSION['count'] = 1;

// 一時的に変更
$_SESSION['count'] = 5;

// 何らかの理由で変更を破棄したい
if (!is_numeric($_SESSION['count'])) {
    session_reset();
}

echo $_SESSION['count']; // 1 が出力される
?>

$_SESSION[‘count’]を一時的に5に変更しましたが、条件によって型チェックに失敗したためsession_reset()で元の値に戻しています。

関連する関数

  • session_start – セッションを開始する
  • session_destroy – セッションを完全に削除する
  • session_write_close – セッションデータの書き込みを確定する
  • session_unset – 現在のセッション変数をすべて削除する

まとめ

session_reset は、PHPのセッションデータを現在のスクリプト実行中に元のセッションストレージの状態へ戻したい場合に役立つ関数です。$_SESSIONの内容を一時的に変更したが、その変更をキャンセルしたいときに使われます。パラメータは不要で、セッションが正しく開始されていることが使用上の前提です。初心者でも扱いやすく、変更キャンセルや状態管理で実務的に便利な関数です。