prepare("SELECT * FROM users WHERE username = ?"); $stmt->execute([$username]); $user = $stmt->fetch(); if ($user && password_verify($password, $user['password'])) { // Regenerate session ID to prevent session fixation session_regenerate_id(true); // Clear any old session data (like guest_tab_id) $_SESSION = []; $_SESSION['user_id'] = $user['id']; $_SESSION['username'] = $user['username']; $_SESSION['role'] = $user['role']; // Handle "Remember Me" functionality if ($remember_me) { // Get remember me duration from settings $stmt = $pdo->prepare("SELECT value FROM settings WHERE key = 'remember_me_duration'"); $stmt->execute(); $duration = $stmt->fetchColumn() ?: '2 weeks'; // Convert duration to seconds $seconds = 0; switch ($duration) { case '1 day': $seconds = 24 * 60 * 60; break; case '2 weeks': $seconds = 14 * 24 * 60 * 60; break; case '1 month': $seconds = 30 * 24 * 60 * 60; break; case '3 months': $seconds = 90 * 24 * 60 * 60; break; case '1 year': $seconds = 365 * 24 * 60 * 60; break; default: $seconds = 14 * 24 * 60 * 60; // Default to 2 weeks } // Set session cookie lifetime ini_set('session.cookie_lifetime', $seconds); ini_set('session.gc_maxlifetime', $seconds); // Update session cookie with new lifetime $params = session_get_cookie_params(); setcookie(session_name(), session_id(), time() + $seconds, $params['path'], $params['domain'], $params['secure'], $params['httponly']); } header('Location: index.php'); exit; } else { $error = translate('error_invalid_credentials'); } } } // Add login-page class to body for CSS targeting $GLOBALS['body_class'] = 'login-page'; require_once 'include/header.php'; ?>
<?php echo $site_title; ?> Logo

- login