File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -411,6 +411,28 @@ public function regenerate(bool $destroy = false)
411411 {
412412 $ _SESSION ['__ci_last_regenerate ' ] = time ();
413413 session_regenerate_id ($ destroy );
414+
415+ $ this ->removeOldSessionCookie ();
416+ }
417+
418+ private function removeOldSessionCookie (): void
419+ {
420+ $ response = Services::response ();
421+ $ cookieStoreInResponse = $ response ->getCookieStore ();
422+
423+ if (! $ cookieStoreInResponse ->has ($ this ->sessionCookieName )) {
424+ return ;
425+ }
426+
427+ // CookieStore is immutable.
428+ $ newCookieStore = $ cookieStoreInResponse ->remove ($ this ->sessionCookieName );
429+
430+ // But clear() method clears cookies in the object (not immutable).
431+ $ cookieStoreInResponse ->clear ();
432+
433+ foreach ($ newCookieStore as $ cookie ) {
434+ $ response ->setCookie ($ cookie );
435+ }
414436 }
415437
416438 /**
You can’t perform that action at this time.
0 commit comments