[RESOLU] pb else

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] pb else

Re: pb else

par quattro » 26 juin 2018, 06:29

Merci
Je vais regarder

Re: pb else

par @rthur » 25 juin 2018, 23:13

La variable 'Error' contient un n° qui correspond à un message d'erreur.
0, c'est qu'il n'y a pas d'erreur.
Pour tous les autres, regarde ici : http://php.net/manual/fr/features.file- ... errors.php

Re: pb else

par quattro » 25 juin 2018, 19:40

j'ai donc mis un var_dump à ce niveau :

Code : Tout sélectionner

//Création des variables $inNom = $_POST['nom']; $inPrenom = $_POST['prenom']; $inQualif = $_POST['qualif']; $inPhoto = $_FILES['photo']; $inTitre = $_POST['titre']; var_dump($inPhoto);

pour une grosse photo cela me met :

Code : Tout sélectionner

C:\UwAmp\www\essai\page\principal.php:76: array (size=5) 'name' => string 'test.jpg' (length=8) 'type' => string '' (length=0) 'tmp_name' => string '' (length=0) 'error' => int 1 'size' => int 0

Pour une petite photo cela met met :

Code : Tout sélectionner

C:\UwAmp\www\essai\page\principal.php:76: array (size=5) 'name' => string 'linux.jpg' (length=9) 'type' => string 'image/jpeg' (length=10) 'tmp_name' => string 'C:\Users\QE\AppData\Local\Temp\php7E15.tmp' (length=42) 'error' => int 0 'size' => int 59437

je m’aperçois que "error = 1" pour la grosse photo.
donc je met un else à ce niveau :

Code : Tout sélectionner

$req = null; } } } else{ if ($inPhoto['error'] == 1){ echo "Photo > 2Mo, recommencez l'enregistrement"; }

et ca a l'air de fonctionner.

mon code entier :

Code : Tout sélectionner

// Si le formulaire est soumis if(isset($_POST['valide'])) { //si les champs ne sont pas vide if (!empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['qualif']) && !empty($_FILES['photo']) && !empty($_POST['titre'])) { //Création des variables $inNom = $_POST['nom']; $inPrenom = $_POST['prenom']; $inQualif = $_POST['qualif']; $inPhoto = $_FILES['photo']; $inTitre = $_POST['titre']; var_dump($inPhoto); // test si le fichier a bien été envoyé et s'il n'y a pas d'erreur if (isset($inPhoto) && $inPhoto['error'] == 0) { // test la taille du fichier if ($inPhoto['size'] <= 2000000 ) { // test si l'extension est autorisée $infosfichier = pathinfo($inPhoto['name']); $extension_upload = $infosfichier['extension']; $extensions_autorisees = array('jpg', 'jpeg', 'png'); if (in_array($extension_upload, $extensions_autorisees)) { // On peut valider le fichier et le stocker $uploads_dir = 'C:\UwAmp\www\essai\image'; move_uploaded_file ($inPhoto['tmp_name'], "$uploads_dir/$inTitre.jpg"); echo "L'envoi a bien été effectué !<br \><br \>"; // On se connecte à la Bdd include('../page/connection.php'); // Enregistrement des valeurs dans la Bdd $req = $bdd->prepare('INSERT INTO entree_personnel(nom, prenom, qualif, titre) VALUES(:nom, :prenom, :qualif, :titre)'); $req->execute(array('nom' => $inNom,'prenom' => $inPrenom,'qualif' => $inQualif,'titre' => $inTitre)); echo "Bienvenue :<b> ".$inPrenom." </b>,dans la Bdd..." ; // Je me deconnecte $req = null; } } } else{ if ($inPhoto['error'] == 1){ echo "Photo > 2Mo, recommencez l'enregistrement"; } } } else { echo "Veuillez remplir tous les champs"; } }
mais je ne comprend pas pourquoi ?

Re: pb else

par Spols » 25 juin 2018, 13:29

Il se peut que quand ta photo est trop lourde, il y ai un blocage au niveau html et que donc ton formulaire ne contient pas ce fichier.

Tente un var_dump($_POST);var_dump($FILES); en tout début de code et compre le résultat avec une bonne et un trop grosse photo.

Re: pb else

par quattro » 25 juin 2018, 13:23

rien du tout

Re: pb else

par or 1 » 25 juin 2018, 13:08

echo "taille : ".$inPhoto['size'];
if ($inPhoto['size'] <= 2000000)

qu'est ce que cela affiche quand la photo est trop lourde ?

Re: pb else

par quattro » 25 juin 2018, 12:49

bonjour
J'avance doucement mais surement..
mon code :

Code : Tout sélectionner

// Si le formulaire est soumis if(isset($_POST['valide'])) { //si les champs ne sont pas vide if (!empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['qualif']) && !empty($_FILES['photo']) && !empty($_POST['titre'])) { //Création des variables $inNom = $_POST['nom']; $inPrenom = $_POST['prenom']; $inQualif = $_POST['qualif']; $inPhoto = $_FILES['photo']; $inTitre = $_POST['titre']; // test si le fichier a bien été envoyé et s'il n'y a pas d'erreur if (isset($inPhoto) && $inPhoto['error'] == 0) { // test la taille du fichier if ($inPhoto['size'] <= 2000000) { var_dump ($inPhoto['size'] <= 2000000); // test si l'extension est autorisée $infosfichier = pathinfo($inPhoto['name']); $extension_upload = $infosfichier['extension']; $extensions_autorisees = array('jpg', 'jpeg', 'png'); if (in_array($extension_upload, $extensions_autorisees)) { // On peut valider le fichier et le stocker $uploads_dir = 'C:\UwAmp\www\essai\image'; move_uploaded_file ($inPhoto['tmp_name'], "$uploads_dir/$inTitre.jpg"); echo "L'envoi a bien été effectué !<br \><br \>"; // On se connecte à la Bdd include('../page/connection.php'); // Enregistrement des valeurs dans la Bdd $req = $bdd->prepare('INSERT INTO entree_personnel(nom, prenom, qualif, titre) VALUES(:nom, :prenom, :qualif, :titre)'); $req->execute(array('nom' => $inNom,'prenom' => $inPrenom,'qualif' => $inQualif,'titre' => $inTitre)); echo "Bienvenue :<b> ".$inPrenom." </b>,dans la Bdd..." ; // Je me deconnecte $req = null; } } else { echo "Photo volumineuse"; } } } else { echo "Veuillez remplir tous les champs"; } }
Donc, si mon formulaire est incomplet cela m'affiche bien : Veuillez remplir tous les champs.
Par contre si ma photo que je sélectionne est > 2Mo cela ne m'affiche pas : Photo volumineuse ?
Par contre si ma photo que je sélectionne est < 2Mo , le var_dump ($inPhoto['size'] <= 2000000), m'indique bien :
C:\UwAmp\www\essai\page\principal.php:84:boolean true

Re: pb else

par Spols » 24 juin 2018, 22:11

tu devrais indenter ton code correctement pour bien voir quel else correspond à quel if.

Re: pb else

par @rthur » 24 juin 2018, 18:45

maintenant quand je rentre les bonnes valeurs dans chaque champs, je valide, cela s'enregistre dans la Bdd.
Par contre si volontairment je rentre une mauvaise valeurs ou autres dans les champs du formulaire, ensuite je valide, rien ne s'enregistre dans la Bdd;Ok normal, mais pour quoi mon :

Code : Tout sélectionner

else { echo "Veuillez recommencer, respectez les consignes"; }
ne s'applique pas ??
Relis ton code et regarde quelle est la condition pour que ce message s'affiche ? :)

Re: pb else

par quattro » 24 juin 2018, 14:17

Bonjour
merci pour ton aide.
mon code est le suivant :

Code : Tout sélectionner

<?php // Si le formulaire est soumis if(isset($_POST['valide'])) { //si les champs ne sont pas vide if (!empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['qualif']) && !empty($_FILES['photo']) && !empty($_POST['titre'])) { //Création des variables $inNom = $_POST['nom']; $inPrenom = $_POST['prenom']; $inQualif = $_POST['qualif']; $inPhoto = $_FILES['photo']; $inTitre = $_POST['titre']; // test si le fichier a bien été envoyé et s'il n'y a pas d'erreur if (isset($inPhoto) && $inPhoto['error'] == 0) { // test la taille du fichier if ($inPhoto['size'] <= 2000000) { // test si l'extension est autorisée $infosfichier = pathinfo($inPhoto['name']); $extension_upload = $infosfichier['extension']; $extensions_autorisees = array('jpg', 'jpeg', 'png'); if (in_array($extension_upload, $extensions_autorisees)) { // On peut valider le fichier et le stocker $uploads_dir = 'C:\UwAmp\www\essai\image'; move_uploaded_file ($inPhoto['tmp_name'], "$uploads_dir/$inTitre.jpg"); echo "L'envoi a bien été effectué !<br \><br \>"; // On se connecte à la Bdd include('../page/connection.php'); // Enregistrement des valeurs dans la Bdd $req = $bdd->prepare('INSERT INTO entree_personnel(nom, prenom, qualif, titre) VALUES(:nom, :prenom, :qualif, :titre)'); $req->execute(array('nom' => $inNom,'prenom' => $inPrenom,'qualif' => $inQualif,'titre' => $inTitre)); echo "Bienvenue :<b> ".$inPrenom." </b>,dans la Bdd..." ; // Je me deconnecte $req = null; } } } } } else { echo "Veuillez recommencer, respectez les consignes"; } ?>
maintenant quand je rentre les bonnes valeurs dans chaque champs, je valide, cela s'enregistre dans la Bdd.
Par contre si volontairment je rentre une mauvaise valeurs ou autres dans les champs du formulaire, ensuite je valide, rien ne s'enregistre dans la Bdd;Ok normal, mais pour quoi mon :

Code : Tout sélectionner

else { echo "Veuillez recommencer, respectez les consignes"; }
ne s'applique pas ??

Re: pb else

par Spols » 23 juin 2018, 22:08

Il suffit que tu mette ton enregistrement en bdd au même endroit que ta sauvegarde du fichier

Re: pb else

par quattro » 23 juin 2018, 18:02

bonjour
mon code :

Code : Tout sélectionner

<?php // Si le formulaire est soumis if(isset($_POST['valide'])) { //si les champs ne sont pas vide if (!empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['qualif']) && !empty($_FILES['photo']) && !empty($_POST['titre'])) { //Création des variables $inNom = $_POST['nom']; $inPrenom = $_POST['prenom']; $inQualif = $_POST['qualif']; $inPhoto = $_FILES['photo']; $inTitre = $_POST['titre']; // test si le fichier a bien été envoyé et s'il n'y a pas d'erreur if (isset($inPhoto) && $inPhoto['error'] == 0) { // test la taille du fichier if ($inPhoto['size'] <= 2000000) { // test si l'extension est autorisée $infosfichier = pathinfo($inPhoto['name']); $extension_upload = $infosfichier['extension']; $extensions_autorisees = array('jpg', 'jpeg', 'png'); if (in_array($extension_upload, $extensions_autorisees)) { // On peut valider le fichier et le stocker $uploads_dir = 'C:\UwAmp\www\essai\image'; move_uploaded_file ($inPhoto['tmp_name'], "$uploads_dir/$inTitre.jpg"); echo "L'envoi a bien été effectué !<br \>"; } } } } // On se connecte à la Bdd include('../page/connection.php'); // Enregistrement des valeurs dans la Bdd $req = $bdd->prepare('INSERT INTO entree_personnel(nom, prenom, qualif, titre) VALUES(:nom, :prenom, :qualif, :titre)'); $req->execute(array('nom' => $inNom,'prenom' => $inPrenom,'qualif' => $inQualif,'titre' => $inTitre)); echo "Bienvenue dans la Bdd..." ; // Je me deconnecte $req = null; } else { echo "Veuillez recommencer l'enregistrement"; } ?>
quand je lance l'appli, si je choisi une photo > 2Mo cela ne s'enregistre pas dans mon dossier(le test si > que 2000000 fonctionne), par contre si photo <2Mo cela s'enregistre dans le dossier avec le nouveau nom attribué.
Mais dans tous les cas ( >2Mo ou <2Mo ) cela s'enregistre dans la Bdd.
Je veux uniquement le cas <2Mo !!!

Re: pb else

par Spols » 22 juin 2018, 14:46

tu devrais indenter ton code correctement pour bien voir quel else correspond à quel if.

commence par corriger tes & par des &&

ensuite si echo "Taille = ".$inPhoto['size']."<br \>"; te donne la bonne valeur, vérifie le type de donnée que tu as avec var_dump() par exemple.

tu peux aussi faire un var_dump($inPhoto['size'] <= 2000000) pour voir ce que vaux ta condition

Re: pb else

par quattro » 22 juin 2018, 09:35

Bonjour,

1) Normal tu as une erreur dans ton if(), pour mettre plusieurs conditions avec un ET, il faut deux symboles "&", comme ceci : if ($cond1 && $cond2)
cela concerne se if là :

Code : Tout sélectionner

// test si le fichier n'est pas trop gros if ($inPhoto['size'] <= 2000000)
2) lorsque je fais un ;

Code : Tout sélectionner

echo "Taille = ".$inPhoto['size']."<br \>";
cela m'affiche bien la taille

Re: pb else

par @rthur » 21 juin 2018, 23:52

Bonjour,


1) Normal tu as une erreur dans ton if(), pour mettre plusieurs conditions avec un ET, il faut deux symboles "&", comme ceci : if ($cond1 && $cond2)

2) Vérifie ce que contient ta variable $inPhoto['size'] pour voir si elle contient bien la taille du fichier.