$allowed_ext = ['jpg','jpeg','png','gif','gıf'];
$allowed_mimes = ['image/jpeg','image/png','image/gif'];
$ext_explode = explode('.',$file['name']);
$uzanti = strtolower(array_pop($ext_explode));
$mime = mime_content_type($file['tmp_name']);
if(!in_array($uzanti,$allowed_ext) || !in_array($mime,$allowed_mimes)){
echo 'hata'
die;
}en basit haliyle bu şekilde yapabilirsiniz.
ayrıca $_FILES['file']['type']; kullanmayın. txt dosyasının sadece uzantısını değiştirip .png yaptığınızda da image/png döner. örnek olarak; shell.php dosyasını kötü niyetli kullanıcı shell.png yapar yükler, sonra yüklenen dosyayı çalıştırır sonuçları kötü olur.
mime_content_type kullanın. bu gibi durumlarda kesin sonuç verir. uzantı farklı içerik farklı olsa da doğru sonucu döner