Maison > base de données > tutoriel mysql > 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
Libérer: 2024-11-03 11:55:03
original
667 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal