IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Je ne comprends pas cet exemple de code


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut Je ne comprends pas cet exemple de code
    Bonjour à tous,

    Dans le code de cette page je ne comprends pas l'utilité du code des lignes 249 et 250 ni le rapport avec la taille du fichier à télécharger.

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 325
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 325
    Billets dans le blog
    17
    Par défaut
    Par défaut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->required      = self::REQUIRE_NO;
    Doc de la méthode ::setRequired(), la seule à écrire sur $this->required :

    * Défini si les fichiers sont requis ou non
    Contexte d'exécution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if ($this->_error == UPLOAD_ERR_OK && is_uploaded_file($_FILES[$this->fieldName]['tmp_name'][$i])) {
        ...
    } else {
        if ($this->required == self::REQUIRE_ALL || $this->required == self::REQUIRE_YES && $i == 0) { // Ligne 249
            $this->errors[$i] = "Erreur pendant l'upload. Fichier trop volumineux ?";
        }
    }
    UPLOAD_ERR_OK est une valeur de $_FILES[...]['error'] => https://www.php.net/manual/fr/featur...oad.errors.php

    => S'il y a une erreur sur l'upload et que le fichier est déclaré obligatoire, lève une erreur
    => Fait la vérif uniquement sur le 1er fichier de la série pour une raison que j'ignore

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut
    Merci
    Le nom des constantes parlent d'eux-même. Mais je ne vois pas pourquoi:
    • On ne distingue pas les cas de REQUIRE_ALL et REQUIRE_YES.
    • Le contrôle ne se fait que sur le premier fichier.

    Je ne comprends pas non plus le message d'erreur avec la taille du fichier.
    Dans le cas de REQUIRE_YES, il me semble qu'il faudrait exiger au moins un fichier (mais pourquoi le premier?), dans celui de REQUIRE_ALL, il faudrait exiger tous les fichiers.

    Le mystère reste entier et je vais dans un premier temps faire l'impasse, quitte quand j'aurais un moment reprendre la classe en distinguant les différents cas. J'y ai d'ailleurs déjà apporté quelques petites améliorations.

  4. #4
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Si j'ai bien compris, je crois que REQUIRE_YES et REQUIRE_ALL correspondent à des cas de figure différents:
    • REQUIRE_YES est utilisé dans le cas de l'upload d'un seul fichier obligatoire ou d'au moins un fichier obligatoire parmi d'autres (et dans ce cas c'est donc le premier upload réussi qui lève l'obligation d'où le test sur $i). Donc si l'upload du premier fichier échoue l'erreur est signalée.
    • REQUIRE_ALL est utilisé lorsque tous les fichiers doivent obligatoirement être uploadés, donc si un échoue, même message.

    Je pense que l'idée derrière est que si par exemple un formulaire exige 2 fichiers obligatoires, on utilise alors 2 inputs nommés différemment et on utilise 2 instances de la classe, chacune avec REQUIRED_YES (ou REQUIRED_ALL ce qui n'est pas génant même s'il n'y a qu'un fichier).

    À noter que si vous réglez la propriété mimeCheck à autre chose que MIME_CHECK_NONE et que vous passez la propriété secureMode à true, vous ne pourrez pas uploader des fichiers nommés "wouech.zinc" ou "j.aime.le.sexe" (du fait des points qui ne sont pas échappés dans la pattern de la ligne 567).

  5. #5
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut
    Merci pour ce commentaire. Je vois qu'ici un doute persiste. Je vais voir si j'affine ces contrôles dans mon adaptation.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 20/04/2015, 12h42
  2. [MySQL] Je ne comprends pas ce bout de code
    Par wperle dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/11/2011, 07h18
  3. Je ne comprends pas cette ligne de code
    Par beegees dans le forum C++
    Réponses: 17
    Dernier message: 13/05/2008, 11h02
  4. Je ne comprend pas le code source de ce programme
    Par elmodeno dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 29/10/2006, 12h16
  5. Réponses: 22
    Dernier message: 16/08/2006, 13h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo