What are the best practices for handling user input from forms in PHP to avoid potential security vulnerabilities like SQL injection or XSS attacks?

To avoid potential security vulnerabilities like SQL injection or XSS attacks when handling user input from forms in PHP, it is crucial to sanitize and validate the input data before using it in any database queries or outputting it to a webpage. This can be achieved by using prepared statements for database queries to prevent SQL injection, and by escaping and filtering input data to prevent XSS attacks.

// Sanitize and validate user input
$username = filter_var($_POST['username'], FILTER_SANITIZE_STRING);
$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);

// Use prepared statements for database queries to prevent SQL injection
$stmt = $pdo->prepare("INSERT INTO users (username, email) VALUES (:username, :email)");
$stmt->bindParam(':username', $username);
$stmt->bindParam(':email', $email);
$stmt->execute();

// Escape and filter input data to prevent XSS attacks when outputting to webpage
echo htmlentities($username);