Upload yada dosya düzenleme ile ilgili durumlarda insanın önünü tıkayan bir durum olabiliyor bir dosyanın uzantısının tespiti.
Php dili gene yapısı itibari ile server üzerinde kendisine tahsis edilmiş tüm dosyalara erişebilir dilediği gibi işlem yapabilir.
sunucunuz üzerinde bulunan bir yada bir çok dosyanın uzantısını bulmak için çok fazla yöntem mevcut;
dosya uzantısının 3 karakterden oluştuğundan emin isek
$uckarakterliuzanti = …
Upload yada dosya düzenleme ile ilgili durumlarda insanın önünü tıkayan bir durum olabiliyor bir dosyanın uzantısının tespiti.
Php dili gene yapısı itibari ile server üzerinde kendisine tahsis edilmiş tüm dosyalara erişebilir dilediği gibi işlem yapabilir.
sunucunuz üzerinde bulunan bir yada bir çok dosyanın uzantısını bulmak için çok fazla yöntem mevcut;
dosya uzantısının 3 karakterden oluştuğundan emin isek
$uckarakterliuzanti = substr ("dosyaadimiz.uzn", -4);
sonuc : .uzn olarak çıkacaktır.
ancak bu fonksiyon çoğu zaman geçerli olmayabiliyor yani bir upload scripti hazırladınız diyelim karşıdan .torrent yada .jpeg uzantılı bir dosya gönderdiklerinde uzantıyı yanlış alacaktır.
bu gibi durumlarda izlenecek yöntemlerden akla ilk gelen yöntem gelen dosya bilgisini “.” karakteri merkezine göre bölerek en son parçayı uzantı kabul etmek
$dosya = "sagopa kajmer - vasiyet .mp3";
$parcalabehcet = explode(".",$dosya);
$soneleman = count($parcalabehcet)-1;
$uzanti = $parcalabehcet[$soneleman];
görüldüğü gibi bu yöntem ile 3 değişken ve 3 satır harcayarak uzantımızı bulduk, peki bu işi daha kolay halledebilen yöntemler yok mu ? elbette var;
$uzanti = strtolower(strrchr($dosya,'.'));
bu yöntem dosya değişkenini sondan “.” karakterine kadar okur ve o kısmı uzanti değişkeni içerisine döker.
$uzanti = end(explode(".",$dosya));
bu yöntem ise başta uzun yoldan yaptığımız işlemi php fonksiyonları ile kısaltarak “.” karakterini merkez alarak dosya ismini parçalar son parçayıda uzanti değişkeni içerisine basar.
sanırım bu kadar yöntem yeterli olacaktır.
Not: konu içerisinde bahsi geçen upload script i gibi bir şey yazmaya niyetlenirseniz ve güvenlik için uzantı kontrolü kullanacaksanız kesinlik uzantı kontrolü yapmayın, mime-type kontrolü ile güvenliği sağlayın.