prepare("SELECT id, password FROM login_users WHERE username = ?"); if ($stmt === false) { // Fail closed (do not leak details in production). die("Prepare failed."); } $stmt->bind_param("s", $username); $stmt->execute(); $result = $stmt->get_result(); // Requires mysqlnd (usually enabled) unset($_POST['username']); unset($_POST['password']); if ($result && $result->num_rows === 1) { $row = $result->fetch_assoc(); $stored_hash = $row["password"]; // Verify password against the stored hash. if (password_verify($password, $stored_hash)) { // Regenerate session ID to prevent session fixation! //session_regenerate_id(true); // Successfully logged in $_SESSION['username'] = $username; $_SESSION['loggedin'] = true; $stmt->close(); $conn->close(); header("Location: dashboard.php"); exit; } else { $login_message = "Invalid username or password"; } } else { $login_message = "Invalid username or password"; } $stmt->close(); $conn->close(); } } ?>