What are some common pitfalls when handling form data in PHP, especially with PHP 5 and newer versions?

One common pitfall when handling form data in PHP, especially with PHP 5 and newer versions, is not properly sanitizing user input, which can lead to security vulnerabilities such as SQL injection or cross-site scripting attacks. To solve this issue, always use functions like `htmlspecialchars()` or `mysqli_real_escape_string()` to sanitize user input before using it in SQL queries or displaying it on the page.

// Sanitize user input using htmlspecialchars()
$name = htmlspecialchars($_POST['name']);
$email = htmlspecialchars($_POST['email']);
```

Another common pitfall is not validating user input, which can lead to unexpected behavior or errors in the application. To solve this issue, always validate user input using functions like `filter_var()` or regular expressions to ensure it meets the expected format or criteria.

```php
// Validate email input using filter_var()
if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
    // Valid email address
} else {
    // Invalid email address
}
```

Lastly, another common pitfall is not handling file uploads securely, which can lead to security vulnerabilities or unexpected behavior. To solve this issue, always use functions like `move_uploaded_file()` to securely handle file uploads and validate file types and sizes before processing them.

```php
// Handle file upload securely
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["file"]["name"]);
if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
    // File uploaded successfully
} else {
    // Error uploading file
}