Maison  >  Article  >  base de données  >  Pourquoi mon code de validation de téléchargement de fichier PHP ne fonctionne-t-il pas correctement ?

Pourquoi mon code de validation de téléchargement de fichier PHP ne fonctionne-t-il pas correctement ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-03 11:55:03571parcourir

Why Is My PHP File Upload Validation Code Not Working Correctly?

Téléchargement de fichiers PHP : garantir les restrictions de type et de taille de fichier

En PHP, la gestion des téléchargements de fichiers nécessite souvent de vérifier les restrictions de type et de taille de fichier. L'extrait de code tente de valider les deux critères, mais rencontre des problèmes. Examinons le code et identifions les erreurs.

<code class="php">//check file extension and size
$resume = ($_FILES['resume']['name']);
$reference = ($_FILES['reference']['name']);
$ext = strrchr($resume, ".");
$ext1 = strrchr($reference, ".");</code>

Ce code capture le nom de fichier et l'extension des deux fichiers. Cependant, la logique de validation ultérieure est erronée :

<code class="php">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>

Le code ne parvient pas à utiliser la logique correcte pour valider les types de fichiers. Au lieu de vérifier le type MIME, il s'appuie sur l'extension du nom de fichier, qui n'est pas fiable. De plus, la validation de la taille n'est pas appliquée aux deux fichiers.

Pour corriger ces problèmes, voici un extrait de code révisé qui utilise les types MIME et vérifie correctement les deux tailles de fichiers :

<code class="php">function allowed_file() {
    $allowed = array('application/doc', 'application/pdf', 'application/docx');

    if (in_array($_FILES['resume']['type'], $allowed) && in_array($_FILES['reference']['type'], $allowed)) {
        if ($_FILES["resume"]["size"] < 400000 && $_FILES["reference"]["size"] < 400000) {
            // Begin file upload here...
        }
    }
}</code>

Ce code vérifie d'abord si les types MIME des fichiers sont inclus dans la liste autorisée. Si tel est le cas, il vérifie ensuite si les deux tailles de fichiers se situent dans la limite spécifiée. Cela garantit que seuls les types et tailles de fichiers autorisés sont acceptés pour le téléchargement.

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