Edited on Feb 23, 2026 By arpinux .
Hi arpinux,
Bug confirmed!
Authentication — "Remember Me" Not Persisting Across Idle Periods
Reported by arpinux.
Fixed session destroyed after 1 hour even with "Remember Me" checked —
Session::handleTimeouts()unconditionally enforcedIDLE_TIMEOUT = 3600 sandMAX_LIFETIME = 86400 son every request, destroying the server-side session data regardless of whether the user had chosen to be remembered. The 30-day browser cookie survived, but the session it referenced was already gone, forcing a new login. Fixed by storing a_remember_meflag in the session at login time and skipping both timeout checks when that flag is present;last_activityis still updated normally. Affectsapp/Core/Session.phpandapp/Controllers/Auth/LoginController.php.Fixed "Remember Me" cookie silently downgraded to session-only after 30 minutes —
Session::regenerate()callssession_regenerate_id(), which automatically sends a newSet-Cookieheader using the configuredcookie_lifetime = 0, overwriting the persistent 30-day cookie with a session-only one. After the first regeneration cycle the browser lost its persistent cookie. Fixed by calling the new private methodSession::extendRememberMeCookie()immediately aftersession_regenerate_id()when_remember_meis set, re-sending the cookie with a fresh 30-day expiry. Affectsapp/Core/Session.php.Fixed PHP session garbage collector deleting "Remember Me" session files after 24 hours —
session.gc_maxlifetimewas set toMAX_LIFETIME = 86400 s(24 h), allowing PHP's GC to physically delete session files after a day of inactivity even for persistent sessions. Changed toREMEMBER_ME_LIFETIME = 2592000 s(30 days) so session files are retained long enough for the browser cookie to still find a valid server-side session. Affectsapp/Core/Session.php.Fixed
_remember_meflag never stored in session —LoginController::login()andLoginController::verify2FA()set the 30-day session cookie but never wrote the corresponding flag into$_SESSION, so the fixes above had no entry point. Both methods now callSession::set('_remember_me', true)before issuing the persistent cookie. Affectsapp/Controllers/Auth/LoginController.php.