Maison >base de données >tutoriel mysql >Comment restreindre les types et la taille des fichiers dans les téléchargements de fichiers PHP ?

Comment restreindre les types et la taille des fichiers dans les téléchargements de fichiers PHP ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-01 04:58:02784parcourir

How to Restrict File Types and Size in PHP File Uploads?

Téléchargement de fichiers PHP : restreindre efficacement les types et la taille des fichiers

En PHP, contrôler les téléchargements de fichiers et garantir l'acceptation de types de fichiers spécifiques est crucial . Un utilisateur a récemment rencontré des problèmes avec son code de validation existant :

<code class="php">//check file extension and size
$resume= ($_FILES['resume']['name']);
$reference= ($_FILES['reference']['name']);
$ext = strrchr($resume, ".");
$ext1 = strrchr($reference, ".");
if (!(($_FILES["resume"]["type"] == "application/doc")
|| ($_FILES["resume"]["type"] == "application/docx")
|| ($_FILES["resume"]["type"] == "application/pdf" ))
&& (($_FILES["reference"]["type"] == "application/doc")
|| ($_FILES["reference"]["type"] == "application/docx")
|| ($_FILES["reference"]["type"] == "application/pdf"))
&& (($ext == ".pdf") || ($ext == ".doc") || ($ext == ".docx"))
&& (($ext1 == ".pdf") || ($ext1 == ".doc") || ($ext1 == ".docx"))
&&  ($_FILES["resume"]["size"] < 400000) //accept upto 500 kb
&&  ($_FILES["reference"]["size"] < 400000)) {

//stop user
} else {
// allow files to upload
}</code>

Selon l'utilisateur, ce code permettait le passage de types de fichiers non autorisés (par exemple, TXT) et n'appliquait pas la limite de taille.

Solution : s'appuyer sur des types MIME et des contrôles de taille appropriée

Pour résoudre ces problèmes, une approche plus robuste est recommandée :

<code class="php">function allowed_file(){

//Allowed mime-type files
$allowed = array('application/doc', 'application/pdf', 'another/type');

//Validate uploaded file type
if(in_array($_FILES['resume']['type'], $allowed) AND in_array($_FILES['reference']['type'], $allowed)){

//Check file size
if($_FILES["resume"]["size"] < 400000 AND $_FILES["reference"]["size"] < 400000 ){

//File types and size are accepted, proceed with file processing
}
}
}</code>

Explication :

Ce code amélioré utilise les types MIME (MultiPurpose Internet Mail Extension) plutôt que les extensions de fichiers. Les types MIME représentent avec précision les formats de fichiers et sont moins sujets à manipulation. De plus, il vérifie indépendamment la taille du fichier pour les fichiers de CV et de référence, garantissant ainsi que la limite est appliquée.

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