What PHP functions or methods are recommended for managing user input and file handling in a forum setting?

When managing user input in a forum setting, it is important to sanitize and validate the data to prevent security vulnerabilities such as SQL injection and cross-site scripting attacks. For file handling, it is crucial to restrict file types, check file sizes, and sanitize file names to prevent malicious uploads.

// Sanitize and validate user input
$user_input = $_POST['user_input'];
$sanitized_input = filter_var($user_input, FILTER_SANITIZE_STRING);
$validated_input = filter_var($sanitized_input, FILTER_VALIDATE_STRING);

// Restrict file types, check file sizes, and sanitize file names
$allowed_file_types = array('jpg', 'jpeg', 'png', 'gif');
$max_file_size = 1048576; // 1MB

if ($_FILES['file']['size'] <= $max_file_size && in_array(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION), $allowed_file_types)) {
    $file_name = filter_var($_FILES['file']['name'], FILTER_SANITIZE_STRING);
    move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' . $file_name);
} else {
    echo 'Invalid file type or size.';
}