What are some best practices for handling user input in PHP forms to prevent potential security vulnerabilities?

When handling user input in PHP forms, it is crucial to sanitize and validate the data to prevent potential security vulnerabilities such as SQL injection, cross-site scripting (XSS), and CSRF attacks. One best practice is to use PHP's built-in functions like htmlspecialchars() to escape special characters and prevent XSS attacks. Additionally, using prepared statements with PDO or mysqli for database queries can help prevent SQL injection attacks.

// Sanitize user input to prevent XSS attacks
$user_input = htmlspecialchars($_POST['user_input']);

// Validate user input to prevent SQL injection
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$stmt->bindParam(':username', $user_input, PDO::PARAM_STR);
$stmt->execute();