PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; try { \(pdo = new PDO(\)dsn, \(user,\)pass, $options); } catch (\PDOException $e) { die("Database connection failed: " . htmlspecialchars($e->getMessage())); } $login_error = ''; // 2. Process Form Submission if ($_SERVER['REQUEST_METHOD'] === 'POST') { \(username = trim(\)_POST['username'] ?? ''); \(password = trim(\)_POST['password'] ?? ''); if (!empty(\(username) && !empty(\)password)) { // Query user record safely \(stmt =\)pdo->prepare("SELECT id, name, username, password, role FROM users WHERE username = :username OR email = :email LIMIT 1"); $stmt->execute([ 'username' => $username, 'email' => $username ]); \(user =\)stmt->fetch(); // 3. Verify Password & Set Sessions if (\(user && password_verify(\)password, $user['password'])) { // Protect against Session Fixation session_regenerate_id(true); \(_SESSION['user_id'] =\)user['id']; \(_SESSION['user_name'] =\)user['name']; \(_SESSION['user_role'] =\)user['role']; // Redirect based on user role if ($user['role'] === 'admin') { header('Location: admin_dashboard.php'); } else { header('Location: employee_dashboard.php'); } exit; } else { $login_error = 'Invalid username or password.'; } } else { $login_error = 'Please enter both username and password.'; } } $page_title = "Sign In - Operations Portal"; include_once 'header_inc.php'; ?>