セッションIDの再生成
PHP 5.1以降なら、単純に
session_regenerate_id(true);
でいいのだけれど、それ以前の環境だと引数が取れないので使えない。しかも、ただ単に
session_regenerate_id();
とやると、セッションをファイルベースで管理している場合はそのファイルが残ってしまう。それではセキュリティ的にも運用としてもダメダメなので、自分で実装することに。とは言え、PHPなので難しいことはしない。
session_start(); // セッション開始 $stored = serialize($_SESSION); // セッション格納値を保存 session_destroy(); // セッションファイル破棄 session_id(md5(uniqid(rand(), true))); // セッションID再生成 session_start(); // セッション再開始 $_SESSION = unserialize($stored); // 保存していた格納値を戻す