関数の概要
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の内容を一時的に変更したが、その変更をキャンセルしたいときに使われます。パラメータは不要で、セッションが正しく開始されていることが使用上の前提です。初心者でも扱いやすく、変更キャンセルや状態管理で実務的に便利な関数です。
