diff options
Diffstat (limited to 'lib/Minz/Session.php')
| -rw-r--r-- | lib/Minz/Session.php | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/lib/Minz/Session.php b/lib/Minz/Session.php index bb2c1a817..2f4058905 100644 --- a/lib/Minz/Session.php +++ b/lib/Minz/Session.php @@ -198,10 +198,24 @@ class Minz_Session { /** * Regenerate a session id. - * Useful to call session_set_cookie_params after session_start() */ - public static function regenerateID(): void { + public static function regenerateID(string $name): void { + if (self::$volatile || self::$locked) { + return; + } + // Ensure that regenerating the session won't send multiple cookies so we can send one ourselves instead + ini_set('session.use_cookies', '0'); + session_name($name); + session_start(); session_regenerate_id(true); + session_write_close(); + $newId = session_id(); + if ($newId === false) { + Minz_Error::error(500); + return; + } + $lifetime = session_get_cookie_params()['lifetime']; + setcookie($name, $newId, $lifetime, self::getCookieDir(), '', Minz_Request::isHttps(), true); } public static function deleteLongTermCookie(string $name): void { |
