How can one ensure the security and integrity of uploaded images when using PHP for file uploads?

To ensure the security and integrity of uploaded images when using PHP for file uploads, one should validate the file type, check for any potential malicious content, and move the uploaded file to a secure directory on the server. Additionally, it is recommended to generate a unique filename to prevent overwriting existing files and to restrict the file size to prevent denial of service attacks.

// Validate file type
$allowedExtensions = ['jpg', 'jpeg', 'png', 'gif'];
$uploadedFileExtension = pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION);

if (!in_array(strtolower($uploadedFileExtension), $allowedExtensions)) {
    die('Invalid file type. Only JPG, JPEG, PNG, and GIF files are allowed.');
}

// Check for malicious content
if (getimagesize($_FILES['image']['tmp_name']) === false) {
    die('Invalid image file.');
}

// Move uploaded file to secure directory
$uploadDirectory = 'uploads/';
$uniqueFilename = uniqid() . '.' . $uploadedFileExtension;

if (!move_uploaded_file($_FILES['image']['tmp_name'], $uploadDirectory . $uniqueFilename)) {
    die('Failed to move uploaded file.');
}