Maison >développement back-end >tutoriel php >Comment puis-je détecter de manière fiable les types de fichiers en PHP pour éviter les problèmes de téléchargement ?

Comment puis-je détecter de manière fiable les types de fichiers en PHP pour éviter les problèmes de téléchargement ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-30 09:49:10705parcourir

How Can I Reliably Detect File Types in PHP to Prevent Upload Issues?

Détection du type de fichier en PHP : dépannage des problèmes de téléchargement

Vous rencontrez des difficultés lors de la vérification des types de fichiers image à l'aide de $_FILES['fupload' ]['taper']. Les utilisateurs ont signalé des messages d'erreur incohérents, indiquant que cette méthode n'est peut-être pas fiable.

Pour garantir une détection précise du type de fichier, envisagez une approche alternative :

Utiliser mime_content_type

Votre suggestion d'utiliser mime_content_type($_FILES['fupload']['type']) est partiellement correcte. Cependant, il n'est toujours pas recommandé de se fier uniquement à la valeur fournie par l'utilisateur (c'est-à-dire le type MIME du fichier). Les utilisateurs peuvent facilement manipuler ces informations.

Une méthode plus fiable

Pour les fichiers image, une méthode privilégiée pour la vérification de type consiste à utiliser la fonction exif_imagetype comme suit :

$allowedTypes = array(IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF);
$detectedType = exif_imagetype($_FILES['fupload']['tmp_name']);
$error = !in_array($detectedType, $allowedTypes);
  • exif_imagetype renvoie le type d'image détecté (par exemple, IMAGETYPE_PNG)
  • Le tableau $allowedTypes définit les types d'images acceptables
  • La variable $error indique si le type de fichier n'est pas autorisé (Vrai) ou valide (False)

Utiliser fininfo Fonctions

Si votre serveur prend en charge l'extension finfo, vous pouvez utiliser des fonctions telles que finfo_file pour obtenir des informations détaillées sur le fichier, y compris son type MIME et d'autres attributs :

$finfo = new finfo(FILEINFO_MIME_TYPE);
$mime_type = $finfo->file($_FILES['fupload']['tmp_name']);
$error = ($mime_type != 'image/gif' && $mime_type != 'image/png' && $mime_type != 'image/jpeg');

En employant ces méthodes, vous pouvez vérifier de manière fiable les types de fichiers et éviter les erreurs inattendues lors du téléchargement de fichiers.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn