edit
Ben sadece siz de PDF dosyalarını izin vermek istediğiniz gerçekleştirdi. Bu durumda kontrol PHP's Fileinfo class and functions. Ama bildiğim kadarıyla güvenlik gider gibi, hala $_FILES[]['type']
:) güvenmemelisiniz
Ben bu soruya bulduğu başkası yardımcı olur burada durumda kalan bırakacağım
Görüntünün mime türünü denetlemek için $_FILES[]['type']
güvensiz olabilir. Bu veriler tarayıcı tarafından gönderilen ve kolayca sahte olabilir.
Sadece görüntüleri (onun belki yanıltıcı adını rağmen) yüklenmesine izin vermek istiyorsanız getimagesize()
işlevini kullanmanız gerekir. Bu fonksiyon, sadece size muhtemelen görüntü hakkında ihtiyacınız olacak boyutunu ancak tüm verileri vermeyecektir.
Ben bir görüntü işleme sınıfında aşağıdaki komut kullanılır:
private function load_image_data($image_file) {
// Firstly, to disambiguate a loading error with a nonexistant file error,
// check to see if the file actually exists.
if( ! file_exists($image_file) ) {
throw new Nonexistent_Image_Exception("The file '{$image_file}' does not exist");
}
// We're going to check the return value of getimagesize, so we don't
// need any pesky warnings or notices popping up, since we're going to
// stop execution of this function if something goes wrong.
$image_data = @getimagesize($image_file);
if( $image_data === false ) {
throw new Load_Image_Exception("Could not get image data from '{$image_file}'");
}
$this->size = new Dimensions($image_data[0], $image_data[1]);
$this->mime = $image_data['mime'];
}
getimagesize()
a 'MIME' dizini içeren bir ilişkisel dizi döndürür dikkat edin. Burada veri güvenilirdir.
Başka bir işlevin ben görüntünün mim türünü kontrol ve uygun GD fonksiyonu ile PNG onu dönüştürülür:
private function load_image($image_file) {
// Suppress warning messages because we're going to throw an
// exception if it didn't work instead.
switch( $this->mime ) {
case 'image/jpeg':
case 'image/pjpeg':
$this->image = @imagecreatefromjpeg($image_file);
break;
case 'image/gif':
$this->image = @imagecreatefromgif($image_file);
break;
case 'image/png':
$this->image = @imagecreatefrompng($image_file);
break;
default:
throw new Invalid_Image_Exception("The image was of an invalid type");
}
if( $this->image === false ) {
throw new Load_Image_Exception("Loading of image '{$image_file}' failed");
}
}
Muhtemelen tüm bu yapmak gerekmez, ama türleri belirttiğiniz filetypes için görünür ne mim görebilirsiniz. Bir jpeg iki farklı MIME türleri olabilir dikkat edin.
Umarım bu yardımcı olur.