How can the PHP code be improved to enhance security for user authentication?

Issue: The PHP code for user authentication is currently vulnerable to SQL injection attacks. To enhance security, we can use prepared statements with parameterized queries to prevent malicious SQL injection attempts.

// Improved PHP code for user authentication with prepared statements

// Assuming $username and $password are user inputs from a form
$username = $_POST['username'];
$password = $_POST['password'];

// Prepare the SQL query with placeholders for username and password
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username AND password = :password");

// Bind the parameters to the placeholders
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);

// Execute the query
$stmt->execute();

// Check if a row was returned, indicating successful authentication
if($stmt->rowCount() > 0){
    // Authentication successful
    echo "User authenticated successfully";
} else {
    // Authentication failed
    echo "Invalid username or password";
}