在session_regenerate_id()后,必须使用session_set_save_handler()函数设置自定义的session处理程序,并在其中删除旧的session文件。以下是示例代码:
session_regenerate_id(true); // 使session id无效并生成一个新的
session_set_save_handler(
"openSession",
"closeSession",
"readSession",
"writeSession",
"destroySession",
"gcSession"
);
session_start();
function openSession($savePath, $sessionName) {
// 打开会话处理程序并返回true
}
function closeSession() {
// 关闭会话处理程序并返回true
}
function readSession($sessionId) {
// 读取会话数据并返回
}
function writeSession($sessionId, $data) {
// 写入会话数据并返回true
}
function destroySession($sessionId) {
// 删除旧的session文件
$sessionFilePath = session_save_path() . '/' . 'sess_' . $sessionId;
if (file_exists($sessionFilePath)) {
unlink($sessionFilePath);
}
return true;
}
function gcSession($maxLifetime) {
// 删除过期的会话文件并返回true
}