diff --git a/app/classes/session.php b/app/classes/session.php index 192ca67..786c14a 100644 --- a/app/classes/session.php +++ b/app/classes/session.php @@ -108,6 +108,9 @@ class Session { // Start fresh session self::startSession(); + + // Reset session timeout flag + unset($_SESSION['session_timeout_shown']); } /** diff --git a/app/includes/session_middleware.php b/app/includes/session_middleware.php index 4779559..bf9880e 100644 --- a/app/includes/session_middleware.php +++ b/app/includes/session_middleware.php @@ -16,8 +16,10 @@ function applySessionMiddleware($config, $app_root, $isTest = false) { // Check session validity if (!Session::isValidSession()) { // Only show session timeout message if there was an active session - if (isset($_SESSION['LAST_ACTIVITY'])) { + // and we haven't shown it yet + if (isset($_SESSION['LAST_ACTIVITY']) && !isset($_SESSION['session_timeout_shown'])) { Feedback::flash('LOGIN', 'SESSION_TIMEOUT'); + $_SESSION['session_timeout_shown'] = true; } // Session invalid, clean up and redirect diff --git a/app/pages/login.php b/app/pages/login.php index c06fecc..0b08e12 100644 --- a/app/pages/login.php +++ b/app/pages/login.php @@ -271,7 +271,7 @@ try { // Show configured login message if any if (!empty($config['login_message'])) { - echo Feedback::render('NOTICE', 'DEFAULT', $config['login_message'], false); + echo Feedback::render('NOTICE', 'DEFAULT', $config['login_message'], false, false, false); } // Get any new feedback messages diff --git a/public_html/index.php b/public_html/index.php index 9a068b1..0c5ce77 100644 --- a/public_html/index.php +++ b/public_html/index.php @@ -116,8 +116,11 @@ if ($validSession) { $currentUser = Session::getUsername(); } else if (isset($_COOKIE['username']) && !in_array($page, $public_pages)) { // Cookie exists but session is invalid - redirect to login - Feedback::flash('LOGIN', 'SESSION_TIMEOUT'); - header('Location: ' . htmlspecialchars($app_root) . '?page=login&timeout=1'); + if (!isset($_SESSION['session_timeout_shown'])) { + Feedback::flash('LOGIN', 'SESSION_TIMEOUT'); + $_SESSION['session_timeout_shown'] = true; + } + header('Location: ' . htmlspecialchars($app_root) . '?page=login'); exit(); } else if (!in_array($page, $public_pages)) { // No valid session or cookie, and not a public page