2009-11-16 7 views

Répondre

4

Lorsque vous téléchargez un fichier avec PHP, il est stocké dans le tableau $ _FILES. Au sein de cela, il y a une clé appelée « type » qui a le type MIME du fichier EG $_FILES['file']['type']

Donc, pour le vérifier est un fichier txt vous

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

Il est très bien expliqué here. Aussi, ne comptez pas sur les extensions de fichiers, il est très peu fiable.

1

Vous devez vérifier l'extension de fichier du fichier téléchargé.

Il ya Pear HttpUpload, il supporte cela.

2

Vous pouvez vérifier le type mime du fichier de téléchargement. En CodeIgniter, ce code est utilisé dans la bibliothèque de téléchargement:

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

La $this->file_type variables ensuite utilisé pour vérifier la configuration de téléchargement, pour voir si le fichier téléchargé est en type autorisé ou non. Vous pouvez voir le code complet dans le fichier de bibliothèque de téléchargement CodeIgniter.

3

Tout simplement: il n'y a aucun moyen. Les navigateurs ne supportent pas systématiquement les limiteurs de type dans les champs de téléchargement de fichiers (AFAIK qui a été planifié ou même est intégré dans le standard HTML, mais à peine implémenté au mieux). L'extension de fichier et les informations de type mime sont fournies par l'utilisateur et ne peuvent donc pas être approuvées.

Vous pouvez vraiment essayer d'analyser le fichier et de voir s'il valide au format que vous attendez, c'est le seul moyen fiable. Ce dont vous devez faire attention, ce sont les débordements de tampon et autres provoqués par des fichiers malveillants. Si tout ce que vous voulez sont des fichiers texte, ce n'est probablement pas si grave.

Questions connexes