Maison  >  Article  >  développement back-end  >  PHP détermine le type de fichier d'installation

PHP détermine le type de fichier d'installation

王林
王林original
2023-05-05 20:56:06484parcourir

PHP est un langage de script côté serveur très populaire qui peut être utilisé pour développer diverses applications et sites Web Internet. Dans le développement PHP, nous devons souvent gérer l’opération de téléchargement de fichiers. Par conséquent, nous devons être en mesure de déterminer le type de fichier téléchargé afin qu’il puisse être traité de manière appropriée lors des opérations ultérieures.

Cet article explique comment utiliser PHP pour déterminer le type de fichiers téléchargés. Tout d’abord, nous devons comprendre comment le type de fichier est déterminé.

Jugement du type de fichier

Le type de fichier est jugé en fonction du contenu du fichier. Sur un ordinateur, chaque fichier contient un en-tête de fichier, qui correspond aux premiers octets du fichier et est utilisé pour décrire les attributs et le format du fichier. En lisant le contenu de l'en-tête du fichier, vous pouvez déterminer le type de fichier.

Différents types de fichiers ont des formats d'en-tête de fichier différents. Par exemple, l'en-tête de fichier d'une image JPEG est composé de « FF D8 », tandis que l'en-tête de fichier d'une image GIF est composé de « GIF89a ». Les formats d'en-tête de fichier pour les types de fichiers courants peuvent être obtenus en effectuant une recherche en ligne.

PHP Déterminer le type de fichier

En PHP, vous pouvez utiliser les deux méthodes suivantes pour déterminer le type de fichier téléchargé.

  1. Utiliser le jugement de type MIME

MIME (MultiPurpose Internet Mail Extensions) est une norme permettant de décrire les types de fichiers. Chaque type de fichier possède un type MIME unique. Lors du téléchargement d'un fichier, le navigateur détecte automatiquement le type MIME du fichier et l'envoie au serveur avec les données.

En PHP, vous pouvez utiliser l'attribut type dans le tableau $_FILES pour obtenir le type MIME du fichier téléchargé. Par exemple :

$type = $_FILES['file']['type'];

if ($type == 'image/jpeg' || $type == 'image/png') {
    // 处理上传的图片文件
} else if ($type == 'video/mp4' || $type == 'video/avi') {
    // 处理上传的视频文件
} else {
    // 文件类型不支持
}

Dans le code ci-dessus, obtenez d'abord le type MIME du fichier téléchargé, puis effectuez différentes opérations en fonction de différents types de fichiers.

L'inconvénient de cette méthode est qu'elle est vulnérable aux vulnérabilités des navigateurs, car ceux-ci ne reconnaissent pas toujours correctement les types de fichiers. Par exemple, un attaquant pourrait télécharger un fichier .jpg en tant que fichier .png, puis exécuter un script malveillant.

  1. Utilisez l'en-tête du fichier pour déterminer

En PHP, vous pouvez utiliser les fonctions finfo_open() et finfo_file() pour lire l'en-tête du fichier du fichier téléchargé. Et déterminez le type de fichier en fonction de l’en-tête du fichier. Par exemple :

$finfo = finfo_open(FILEINFO_MIME_TYPE);
$type = finfo_file($finfo, $_FILES['file']['tmp_name']);

if ($type == 'image/jpeg' || $type == 'image/png') {
    // 处理上传的图片文件
} else if ($type == 'video/mp4' || $type == 'video/avi') {
    // 处理上传的视频文件
} else {
    // 文件类型不支持
}

finfo_close($finfo);

Dans le code ci-dessus, utilisez d'abord la fonction finfo_open() pour créer un objet d'informations sur le fichier, puis utilisez la fonction finfo_file() pour lire l'en-tête du fichier téléchargé. Enfin, différentes opérations sont effectuées en fonction du type de fichier.

L'utilisation de l'en-tête du fichier pour déterminer le type de fichier est plus fiable que l'utilisation du type MIME car l'en-tête du fichier n'est pas vulnérable aux attaques. Cependant, cette méthode présente également certains inconvénients. Par exemple, le format d'en-tête de certains types de fichiers peut être différent, vous devez donc trouver les informations pertinentes à l'avance.

Conclusion

En PHP, déterminer le type de fichier téléchargé est une tâche très importante. Le type MIME et l'en-tête du fichier peuvent être utilisés pour déterminer le type de fichier, mais chacun présente ses propres avantages et inconvénients.

Afin d'améliorer la précision et la sécurité de la détermination du type de fichier téléchargé, il est recommandé d'utiliser une méthode combinée et d'utiliser à la fois le type MIME et l'en-tête de fichier pour déterminer le type de fichier.

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