Erreur dans le code! mais ou?
Fermé
letrancheur
Messages postés
210
Date d'inscription
dimanche 14 juillet 2013
Statut
Membre
Dernière intervention
25 août 2020
-
Modifié par letrancheur le 1/03/2014 à 21:30
letrancheur Messages postés 210 Date d'inscription dimanche 14 juillet 2013 Statut Membre Dernière intervention 25 août 2020 - 4 mars 2014 à 18:33
letrancheur Messages postés 210 Date d'inscription dimanche 14 juillet 2013 Statut Membre Dernière intervention 25 août 2020 - 4 mars 2014 à 18:33
A voir également:
- Erreur dans le code! mais ou?
- Erreur 0x80070643 - Accueil - Windows
- Le code ascii - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
2 réponses
letrancheur
Messages postés
210
Date d'inscription
dimanche 14 juillet 2013
Statut
Membre
Dernière intervention
25 août 2020
7
2 mars 2014 à 19:04
2 mars 2014 à 19:04
Voila comment j'ai du faire pour résoudre le problème mais bon comment
j'ai du faire une répétition donc une autre idée parce que la répétition je préférerait éviter
j'ai du faire une répétition donc une autre idée parce que la répétition je préférerait éviter
<?php // Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0) { if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0) { // Testons si l'extension est autorisée $infosfichier = pathinfo($_FILES['monfichier']['name']); $extension_upload = $infosfichier['extension']; $extensions_autorisees = array('gif', 'ico', 'png', 'jpg', 'jpeg', 'tif', 'bmp', 'tiff', 'dib', 'wdp'); if (in_array($extension_upload, $extensions_autorisees)) { // Testons si le fichier n'est pas trop gros if ($_FILES['monfichier']['size'] <= 1000000) { // On peut valider le fichier et le stocker définitivement move_uploaded_file($_FILES['monfichier']['tmp_name'], 'reception/' . basename($_FILES['monfichier']['name'])); echo "L'envoi a bien été effectué !"; ?> <meta http-equiv="refresh" content="1;url=reception"/> <?php }else{ echo "L'image est trop volumineuse";} }else{echo "L'envoi n'a pas été effectué car le fichier n'a pas la bonne extension!<br /> Veuillez vérifier que le fichier sois bien une image. Puis réessayez.";} } }else{echo "Rien n'a été envoyé";} ?>
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
3 mars 2014 à 11:27
3 mars 2014 à 11:27
Salut,
Dans le cas où la taille des données reçues par la méthode POST est plus grande que post_max_size, les superglobales $_POST et $_FILES seront vides. Ceci peut être surveillé de différentes façons, e.g. en passant une variable $_GET au script qui traite les données, i.e. <form action="edit.php?processed=1">, et ainsi vérifier si $_GET['processed'] est défini.
https://www.php.net/manual/fr/ini.core.php#ini.post-max-size
Bonne journée
Dans le cas où la taille des données reçues par la méthode POST est plus grande que post_max_size, les superglobales $_POST et $_FILES seront vides. Ceci peut être surveillé de différentes façons, e.g. en passant une variable $_GET au script qui traite les données, i.e. <form action="edit.php?processed=1">, et ainsi vérifier si $_GET['processed'] est défini.
https://www.php.net/manual/fr/ini.core.php#ini.post-max-size
Bonne journée
letrancheur
Messages postés
210
Date d'inscription
dimanche 14 juillet 2013
Statut
Membre
Dernière intervention
25 août 2020
7
Modifié par letrancheur le 3/03/2014 à 12:28
Modifié par letrancheur le 3/03/2014 à 12:28
ok donc que me conseillerait tu pour régler le problème?
parsque mon pseudo code c'était sa
parsque mon pseudo code c'était sa
et si j'ai bien compris toi tu me conseil ne ne pas toucher au code que j'ai fait dc celui qui est dans le msg précédent mais de mettre
début
vérifier si il y a bien un fichier envoyé
vérifier si le fichier envoyé est une image
si oui vérifier sa taille
(si bonne vérifier si le fichier n'existe pas déjà [pas encore fait c'est pour la suite])
(si le fichier n'existe pas encore) envoyer+message "envoyé"
(aussi-non mettre message "exite déjà")
si taille image trop grande message "trop grand" [pas un if mais un else]
si fichier n'est pas une image message "ce n'est pas une image"[pas un if mais un else]
si il n'y a rien d'envoyé message "rien n'a été envoyé"[pas un if mais un else]
fin
ce que j'ai mis entre () c'est pour la suite pas encore attaqué
<form action="edit.php?processed=1">c'est sa?
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
3 mars 2014 à 12:31
3 mars 2014 à 12:31
Le code de ton premier post est correct, la répétition de la condition de ton deuxième message ne sert théoriquement à rien.
L'idée proposée sur la doc est effectivement d'envoyer un paramètres GET à la soumission du formulaire.
Si on reçoit ce paramètres GET mais que le tableau $_FILE est vide, on suppose que le fichier envoyé dépasse la limite définie dans la configuration de php.
L'idée proposée sur la doc est effectivement d'envoyer un paramètres GET à la soumission du formulaire.
Si on reçoit ce paramètres GET mais que le tableau $_FILE est vide, on suppose que le fichier envoyé dépasse la limite définie dans la configuration de php.
letrancheur
Messages postés
210
Date d'inscription
dimanche 14 juillet 2013
Statut
Membre
Dernière intervention
25 août 2020
7
Modifié par letrancheur le 4/03/2014 à 01:22
Modifié par letrancheur le 4/03/2014 à 01:22
Ok et comment puis-je faire pour faire en sorte que mon code bassé sur mon speudo-code fonctionne dans tous les cas?
Mettre la verification de la taille avant celle de l'extension ?
Ou alors je dois peux- etre virer la partie après le AND dans mon premier if?
Ou alors encore le laisser mais présiser a coter de chaque else qu'il sagit d'une erreur? Mais je crois que ca ne resolvera pas mon probleme
Mettre la verification de la taille avant celle de l'extension ?
Ou alors je dois peux- etre virer la partie après le AND dans mon premier if?
Ou alors encore le laisser mais présiser a coter de chaque else qu'il sagit d'une erreur? Mais je crois que ca ne resolvera pas mon probleme
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
Modifié par Pitet le 4/03/2014 à 12:26
Modifié par Pitet le 4/03/2014 à 12:26
Ton code fonctionne déjà correctement. Il y a un seul cas que tu ne peux pas détecter avec la variable $_FILES : lorsque le fichier est trop gros.
Dans ce cas, la variable $_FILES est vide et tu ne peux pas différencier si rien n'est envoyé ou si le fichier est trop gros.
On ajoute donc un paramètre GET qui sera lui toujours envoyé.
Si vous veux controler toutes les possibilités, tu peux tester comme ceci :
Mais tu peux simplifier en faisant un seul test si tu n'as pas besoin des détails :
Si le paramètre GET existe et que le tableau $_FILES est défini (is set), alors l'utilisateur a bien envoyé un fichier.
Si le paramètre GET existe mais que le tableau $_FILES n'est pas défini, alors l'utilisateur a envoyé un fichier trop gros.
Si le paramètre GET n'existe pas, l'utilisateur n'as pas encore validé le formulaire.
Dans ce cas, la variable $_FILES est vide et tu ne peux pas différencier si rien n'est envoyé ou si le fichier est trop gros.
On ajoute donc un paramètre GET qui sera lui toujours envoyé.
Si vous veux controler toutes les possibilités, tu peux tester comme ceci :
if (isset($_GET['processed'])) { if (isset($_FILES['monfichier'])) { if ($_FILES['monfichier']['error'] == 0) { // suite de ton code } else { echo 'Une erreur est survenu pendant l\'envoi du fichier'; } } else { echo 'Le fichier envoyé est trop volumineux'; } } else { echo 'Formulaire pas encore validé'; }
Mais tu peux simplifier en faisant un seul test si tu n'as pas besoin des détails :
if (isset($_GET['processed']) AND isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0) { // le fichier est bien envoyé } else { // rien n'est envoyé ou le fichier est trop gros }
Si le paramètre GET existe et que le tableau $_FILES est défini (is set), alors l'utilisateur a bien envoyé un fichier.
Si le paramètre GET existe mais que le tableau $_FILES n'est pas défini, alors l'utilisateur a envoyé un fichier trop gros.
Si le paramètre GET n'existe pas, l'utilisateur n'as pas encore validé le formulaire.
letrancheur
Messages postés
210
Date d'inscription
dimanche 14 juillet 2013
Statut
Membre
Dernière intervention
25 août 2020
7
Modifié par letrancheur le 4/03/2014 à 13:36
Modifié par letrancheur le 4/03/2014 à 13:36
ok je vais tester les 2
mais c'est bizare parsque quand j'ai fait le test avec le 2e code que j'ai mis sur la page et que j'evoyait une image de 2.412.739 octets cela me mettait comme message L'image est trop volumineuse
Alors que dans le premier code cela me mettait une erreur est survenue lors de l'envoye
mais c'est bizare parsque quand j'ai fait le test avec le 2e code que j'ai mis sur la page et que j'evoyait une image de 2.412.739 octets cela me mettait comme message L'image est trop volumineuse
Alors que dans le premier code cela me mettait une erreur est survenue lors de l'envoye