What potential security risks are associated with only checking file extensions for uploaded files in PHP?

Checking file extensions alone is not a secure method of validating uploaded files in PHP as it can be easily manipulated by changing the file extension. To enhance security, it is recommended to check the file's MIME type to verify its actual content. This helps prevent malicious files from being uploaded to the server.

// Get the MIME type of the uploaded file
$file_mime = mime_content_type($_FILES['file']['tmp_name']);

// Allowed MIME types
$allowed_mime_types = array('image/jpeg', 'image/png', 'application/pdf');

if (in_array($file_mime, $allowed_mime_types)) {
    // Process the uploaded file
    move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' . $_FILES['file']['name']);
    echo 'File uploaded successfully.';
} else {
    echo 'Invalid file type. Please upload a JPEG, PNG, or PDF file.';
}