Dosya yükleme türünü Sınırlama

4 Cevap php

Basit bir soru. Sadece yükleme üzerine txt dosyaları izin vermek için bir yolu var mı? PHP sağlayan, Etrafa baktım ve ben bulduğunuz tüm text/php olduğunu.

$uploaded_type=="text/php

4 Cevap

PHP ile bir dosyayı yüklerken onun $ _FILES dizisinde saklanır. Bu içindeki dosyanın mime türü olan "tip" olarak adlandırılan bir anahtar var EG $_FILES['file']['type']

Yani bunu kontrol etmek için yapmanız bir txt dosyası

if($_FILES['file']['type'] == 'text/plain'){
    //Do stuff with it.
}

Bu çok iyi izah ediyor here. Ayrıca, çok güvenilmez dosya uzantıları güvenmeyin.

Basitçe söylemek gerekirse: yolu yoktur. Tarayıcılar sürekli (AFAIK planlanmıştır hatta HTML standardına entegre edilmiştir, ama ancak en iyi uygulanan) dosya yükleme alanları tip sınırlayıcı desteklemez. Dosya uzantısı ve MIME tipi bilgileri hem kullanıcı sağlanan ve dolayısıyla güvenilir olamaz vardır.

Siz gerçekten sadece dosyayı ayrıştırmak denemek ve beklediğiniz ne biçim doğrular olmadığını görebiliyorum, tek güvenilir yolu. Eğer tampon taşmaları ve benzeri kötü niyetle biçimlendirilmiş dosyaları neden olduğu ile dikkatli olmak için neler gerekir. İstediğiniz tüm metin dosyaları varsa, bu olsa muhtemelen böyle bir büyük bir anlaşma değil.

Sen Yüklenilen dosyanın mime türünü kontrol edebilir. CodeIgniter'daki, bu kod yükleme kütüphanede kullanılır:

$this->file_type = preg_replace("/^(.+?);.*$/", "\\1", $_FILES[$field]['type']);

Değişken $this->file_type daha sonra yüklenen dosyaya izin türü ya da değil olup olmadığını görmek için, yükleme yapılandırmasını kontrol etmek için kullanılır. Sen CodeIgniter yükleme kitaplığı dosyasında tam kodunu görebilirsiniz.

Sen yüklenen dosyanın dosya uzantısını kontrol etmeniz gerekir.

Armut HttpUpload bu destekler var.