PHP: セッションクッキーを観察する
1. このページの目的
PHPのセッションクッキーを観察する。
2. 値を表示する
2.1. 追加機能
2.2. 各種値の出力
PHPSESSID
Set-Cookie: PHPSESSID=8864c9a33c58f27583fa8a21314aee34; path=/; secure; HttpOnly; SameSite=lax
8864c9a33c58f27583fa8a21314aee34
- パラメータ
session_regenerate_id
を付けると新しい session_id が振られる。
2024-12-12T12:52:43+09:00
'name|s:3:"Foo";age|i:100;current-time|s:25:"2024-12-12T12:52:43+09:00";'
3. このページに書いてあるPHPコードの一部
session_start([
'cookie_secure' => true,
'cookie_httponly' => true,
'cookie_samesite' => 'lax',
]);
if (isset($_GET['clear'])) {
$_SESSION = [];
}
if (isset($_GET['regenerate'])) {
session_regenerate_id();
}
if (!isset($_SESSION['name'])) {
$_SESSION['name'] = 'Foo';
}
if (!isset($_SESSION['age'])) {
$_SESSION['age'] = 100;
}
if (!isset($_SESSION['current-time'])) {
$_SESSION['current-time'] = date('c', time());
}
4. 関連する関数
- セッションクッキーが発行される。
- つまり、HTTPレスポンスメッセージに Set-Cookie ヘッダフィールドがセットされる。
- この関数を実行した後は、
$_SESSION
変数に値をセットすることができる。 - オプションを指定しないと、path属性しかセットされない。
set-cookie: PHPSESSID=2bef2a47dc9487a25a44fd6adedd5f79; path=/
- そのクッキーの期限がくるまで、新たなセッションクッキーは発行されない。
- 現在のセッションIDを新しく生成したものと置き換える。
- 問題もあるようだ(下記参照)。解決策は?書いてなさそう。
警告 現在の session_regenerate_id は、不安定なネットワークをうまく扱えません。 たとえば、モバイルネットワークや WiFi ネットワークです。 よって、 session_regenerate_id を 呼ぶことで、セッションの消失を経験するかもしれません。
- 現在のセッション ID を取得または設定する。
- 現在のセッション名を取得または設定する。
- 現在のセッションデータを、セッションエンコードされた文字列に変換する。
- 新しいセッションIDを作成する。
- session 配列の変更を破棄してセッションを終了します。
- セッションのシャットダウン関数。
- session 配列を元の値で再初期化します。
- 使うことはほとんどなさそう。
etc.