Maison >base de données >tutoriel mysql >Comment restreindre les types et la taille des fichiers dans les téléchargements de fichiers PHP ?
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!