What are common pitfalls when implementing file uploads in PHP?

One common pitfall when implementing file uploads in PHP is not properly validating and sanitizing user input, which can lead to security vulnerabilities such as file injection attacks. To mitigate this risk, always validate file types, check file sizes, and use functions like `move_uploaded_file()` to securely handle file uploads.

// Example of validating file type and moving the uploaded file to a secure location
if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
    $allowedTypes = ['image/jpeg', 'image/png'];
    $maxFileSize = 1048576; // 1MB

    if (in_array($_FILES['file']['type'], $allowedTypes) && $_FILES['file']['size'] <= $maxFileSize) {
        $uploadPath = 'uploads/' . basename($_FILES['file']['name']);

        if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadPath)) {
            echo 'File uploaded successfully!';
        } else {
            echo 'Failed to move file.';
        }
    } else {
        echo 'Invalid file type or size.';
    }
} else {
    echo 'Error uploading file.';
}