How can PHP developers ensure data integrity and security when implementing file upload functionality on a website?

To ensure data integrity and security when implementing file upload functionality on a website, PHP developers can validate the file type, limit the file size, sanitize the file name, and store the uploaded files in a secure directory outside the web root.

// Validate file type
$allowed_types = array('jpg', 'jpeg', 'png', 'gif');
$uploaded_file_type = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
if (!in_array($uploaded_file_type, $allowed_types)) {
    die('Invalid file type. Only JPG, JPEG, PNG, and GIF files are allowed.');
}

// Limit file size
$max_file_size = 5 * 1024 * 1024; // 5MB
if ($_FILES['file']['size'] > $max_file_size) {
    die('File size exceeds the limit of 5MB.');
}

// Sanitize file name
$uploaded_file_name = preg_replace("/[^A-Za-z0-9.]/", '', $_FILES['file']['name']);

// Store uploaded file in a secure directory
$upload_dir = '/var/www/uploads/';
if (!is_dir($upload_dir)) {
    mkdir($upload_dir, 0755, true);
}
move_uploaded_file($_FILES['file']['tmp_name'], $upload_dir . $uploaded_file_name);