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.
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.
Par défaut :
Doc de la méthode ::setRequired(), la seule à écrire sur $this->required :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $this->required = self::REQUIRE_NO;
Contexte d'exécution :* Défini si les fichiers sont requis ou non
UPLOAD_ERR_OK est une valeur de $_FILES[...]['error'] => https://www.php.net/manual/fr/featur...oad.errors.php
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 ?"; } }
=> 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
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
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.
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).
Brachygobius xanthozonus
Ctenobrycon Gymnocorymbus
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager