Gençler resim yükleme yapmak istiyoruz. Güvenlik açısından aşağıda verilen kodda bir problem var mı?
<?php
$input_adi = "file";
$gecerli_uzantilar = Array("png","jpg","jpeg");
$yuklenecek_dizin = "../../Cat/image/";
$boyut = 1; // MB cinsinden
// eğer dosya yüklenmiş ise
if(is_uploaded_file($_FILES[$input_adi]["tmp_name"])) {
// yükleme sırasında hata oluşursa gösterelim
if($_FILES[$input_adi]['error'] !== 0) {
$error="Dosya yüklenirken hata oluştu:" . $_FILES[$input_adi]['error'];
} else {
// dosya boyutunu kontrol ediliyor
if($_FILES[$input_adi]['size'] > (1024*1024*$boyut)){
$error= "<div class='alert alert-danger'>
<strong><i class='fa fa-close' style='font-size:24px;color:red'></i> Resim $boyut MB'dan büyük olamaz. </strong>
</div>";
} else {
$isim = $_FILES[$input_adi]['name'];
$uzanti = explode('.', $isim);
$uzanti = $uzanti[count($uzanti)-1];
// dosya uzantısı kontrol ediliyor
if(in_array($uzanti,$gecerli_uzantilar) !== true){
$error= "<div class='alert alert-danger'>
<strong><i class='fa fa-close' style='font-size:24px;color:red'></i> İzin verilenler png, jpg veya jpeg </strong>
</div>";
} else {
$dosya_adi = time().".".$uzanti;
// yüklenen eğer görsel ise getimagesize fonksiyonu array içinde değerler verecektir. eğer vermezse yüklenen görsel değil demektir.
if(!getimagesize($_FILES[$input_adi]["tmp_name"])){
$error= "<div class='alert alert-danger'>
<strong><i class='fa fa-close' style='font-size:24px;color:red'></i>Bu dosya türünü tanımadık! </strong>
</div>";
unlink($_FILES[$input_adi]["tmp_name"]); // görsel siliyoruz
}
// dosya dizine yükleniyor
if(move_uploaded_file($_FILES[$input_adi]["tmp_name"], $yuklenecek_dizin.$dosya_adi)){
$error= "<br> Resim başarıyla yüklendi.";
} else {
$error= "Görsel yüklenirken hata oluştu.";
}
}
}
}
}
?>Dosya boyutunu kontrol ediyor +
Dosyanın resim dosyası olup olmadığını uzantısından kontrol ediyor +
Gönderilen dosyayı sunucuda başka bir isimle adlandırıyor. +
getimagesize fonksiyonu dosya türünü kontrol ediyor. +
ayrıca htaccess ile yükleme yapılan klasörde php dosyalarını çalışmaması için kod eklendi.
Bu yeterli olur mu? Fikri olan yok mu?