Lors de la validation des types de fichiers téléchargés en PHP, en s'appuyant sur le $_FILES['fupload']['type'] fourni par l'utilisateur est risqué car il peut être manipulé. Cette méthode peut entraîner des incohérences dans la gestion des erreurs.
Pour résoudre ce problème, envisagez d'utiliser mime_content_type() pour obtenir une détection de type de fichier plus fiable. Cependant, mime_content_type() dépend également dans une certaine mesure des entrées de l'utilisateur.
Pour une approche plus robuste :
$allowedTypes = [IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF]; $detectedType = exif_imagetype($_FILES['fupload']['tmp_name']); $error = !in_array($detectedType, $allowedTypes);
Cette méthode examine le contenu réel du fichier téléchargé et vérifie son type en fonction de sa signature.
Si votre serveur prend en charge fininfo(), il fournit une analyse de fichier plus complète. L'exemple de code suivant illustre son utilisation :
$mimeTypes = ['image/png', 'image/jpeg', 'image/gif']; $finfo = new finfo(FILEINFO_MIME_TYPE); $mimeType = $finfo->file($_FILES['fupload']['tmp_name']); $error = !in_array($mimeType, $mimeTypes);
En implémentant l'une ou l'autre de ces méthodes, vous pouvez améliorer la fiabilité de vos preuves de type de fichier et améliorer la cohérence de la gestion des erreurs.
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!