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 :

Affichage d'un message d'erreur lors de non validation des données saisies


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 53
    Par défaut Affichage d'un message d'erreur lors de non validation des données saisies
    Bonjour,
    J'ai un petit problème au niveau de la page de connexion.En fait, je veux qu'en saisissant le pseudo et password ,il y 'aura une comparaison avec les données enregistrées dans la base et si une donnée est mal saisie ,un message d'erreur va être affiché.
    Voici le code que j'ai essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <?php
    require 'Client.php';
    $p=new Client($base);
    ?>
     
        <form  method="POST">
            Veuillez entrer vos identifiants pour vous connecter:<br />
            <div class="center">
                <label for="username">Nom d'utilisateur</label><input type="text" name="username" id="username" /><br />
                <label for="password">Mot de passe</label><input type="password" name="password" id="password" /><br />
                <input type="submit" value="Connexion" />
                    </div>
        </form>
     
    <?php 
    if(!empty($_POST))
    {
    $mail=$_POST["username"];
    $pwd=$_POST["password"];
    $p->connecter($mail,$pwd);
     
    }
    else{
    	echo "introuvable";
    }
     ?>              
            </body>
     
    </html>
    Code de la fonction connecter():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    public function  connecter($mail,$pwd)
    {
     
        $requette=$this->database->query("select * from  client where Pseudo = '$mail' and Mot_de_passe='$pwd'") ;
     
         if( $requette->rowCount()>0)
         {
             $requette->setFetchMode(PDO::FETCH_OBJ);
       $line=$requette->fetch();
       $_SESSION['connect']=TRUE;
       $_SESSION['idf']=$line->Id_Client;
       header('location:ConsulterCatClient.php');
       }
       else
       {
          return false;
       }
     
    }

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Par défaut
    Bonjour,

    A mes yeux, petite erreur de conception.

    Je m'explique :

    Ton if vérifie si on submit ton formulaire, jusque là, pourquoi pas. Dans tous les cas, j'ai envie de dire, t'es obligé de le soumettre pour le traiter.

    Donc à chaque fois, il va dans ta fonction connecter. Et là, ton return ne sert à rien, tu iras jamais dans le else ou tu as mis ton écho.

    Pourquoi? Sachant que tu es déjà passée dans le if, ton else ne sert plus à rien, que tu return false, true, ou tout ce que tu veux, ça ne servira à rien.


    Commence déjà par vérifier si le bouton envoyer est submit, et non si tu reçois des données en $_POST. Une fois ça, tu vérifies la validité de tes champs. Si les données rentrées sont corrects, là tu peux faire un traitement du genre :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (($ret = connecter()) == true) {
    // Tu rediriges sur une page d'accueil
    } else {
    // Tu affiches un message d'erreur
    }
    En espérant t'avoir un peu éclaircis... Bon courage

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 53
    Par défaut
    j'ai testé ce que vous m'avez proposé mais toujours le même problème, le message "erreur" s'affiche même si je ne saisie rien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <?php 
     
    	if( isset($_POST["submit"]) ) 
    {
    $mail=$_POST["username"];
    $pwd=$_POST["password"];
    $ret=false;
    $ret=$p->connecter($mail,$pwd);
    }
    if ( $ret==true) {
     header('location:ConsulterCatClient.php');
    } else {
    echo"erreur";
    }
     
     ?>

  4. #4
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Par défaut
    Ce qui revient à dire que ta variable $ret est toujours égale à false.

    Je peux avoir ta fonction connecter?

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 53
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    public function  connecter($mail,$pwd)
    {
     
        $requette=$this->database->query("select * from  client where Pseudo = '$mail' and Mot_de_passe='$pwd'") ;
     
         if( $requette->rowCount()>0)
         {
             $requette->setFetchMode(PDO::FETCH_OBJ);
       $line=$requette->fetch();
       $_SESSION['connect']=TRUE;
       $_SESSION['idf']=$line->Id_Client;
    return true;
       }
       else
       {
          return false;
       }
     
    }

  6. #6
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Par défaut
    Donc pour le coup, ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requette->rowCount() > 0
    ne fonctionne pas et c'est très simple

    Dans ta requête tu souhaites passer des variables, sauf que tu lui passes la chaine de caractère $mail et $pwd :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       $requette=$this->database->query("select * from  client where Pseudo = '$mail' and Mot_de_passe='$pwd'") ;
    change en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       $requette=$this->database->query("select * from  client where Pseudo = '".$mail."' and Mot_de_passe='".$pwd."'") ;
    EDIT : Tu es sûre qu'un select * est obligatoire? Tu as surement des champs dont tu n'as pas besoin

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Par défaut
    Accessoirement tu stockes les mots de passe en clair et y a possibilité de faire une injection sql.

  8. #8
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Par défaut
    Si on part ce point de vue là, y à pas mal à redire.

    Or là, elle veut un message d'erreur sur son formulaire. Si elle à besoin de sécurité, elle refera un topic probablement, on ne vend pas la peau de l'ours avant de l'avoir tué

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 53
    Par défaut
    J'ai suivi ce que vous m'avez proposé mais rien ne change , toujours ( "erreur") s'affiche dés que je charge la page.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <?php 
     
    	if( isset($_POST["submit"]) ) 
    {
    $mail=$_POST["username"];
    $pwd=$_POST["password"];
    $ret=false;
    $ret=$p->connecter($mail,$pwd);
    }
    if ( $ret==true) {
     header('location:ConsulterCatClient.php');
    } else {
    echo"erreur";
    }
     
     ?>
    Au niveau du code connecter() j'ai changé query par prepare car je viens de savoir que rowCount() ne fonctionne pas avec query
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
     
    public function  connecter($mail,$pwd)
    {
     
         $requette=$this->database->prepare("select * from  client where Pseudo = '".$mail."' and Mot_de_passe='".$pwd."'") ;
          var_dump(  $requette);
         if( $requette->rowCount()>0)
         {
             $requette->setFetchMode(PDO::FETCH_OBJ);
       $line=$requette->fetch();
       $_SESSION['connect']=TRUE;
       $_SESSION['idf']=$line->Id_Client;
    return true;
       }
       else
       {
    return false;
       }
     
    }

  10. #10
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Par défaut
    Ton var_dump ($requette) te retourne bien quelque chose?

  11. #11
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 53
    Par défaut
    Il me retourne la requête select telle qu'elle a été écrite.

  12. #12
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Par défaut
    Je viens juste de tilter...
    Mais à quel moment tu l'exécutes ta requête?

  13. #13
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 53
    Par défaut
    Lors du submit

  14. #14
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Par défaut
    Bin... Non?

    Ta requête tu l'exécutes avec ça? http://php.net/manual/fr/pdostatement.execute.php

    Là tu exécutes rien du tout...

  15. #15
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Par défaut
    Par exécuter la requête JujuPomme veut dire qu'il manque $requette>execute() .

  16. #16
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 53
    Par défaut
    j'ai testé ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    public function  connecter($mail,$pwd)
    {
    try {
         $requette=$this->database->query("select Email , Mot_de_passe from  client where Email = '".$mail."' and Mot_de_passe='".$pwd."'") ;
     
         $requette -> execute();
    	 var_dump($requette);
         While ($donnees =  $requette->fetch())
       {
        header('location:ConsulterCatClient.php');
    	$_SESSION['connect']=TRUE;
       $_SESSION['idf']=$line->Id_Client;
       }  
       }
       catch(Exeption $e)
       {
     
       die('Erreur : ' . $e->getMessage());
       }
     
     
    }
    Il marche bien si je saisie des données valides mais si je laisse les champs vides ou je saisie des données erronées ,rien ne s'affiche.

  17. #17
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Par défaut
    Tu ne renvoie pas False, du coup il passe jamais dans ton else qui te permet l'affichage...

Discussions similaires

  1. Affichage d'un message d'erreur lors d'une saisie de lettre
    Par quik03jump dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 27/01/2016, 17h06
  2. [MySQL] message d'erreur lors de l'envois des données du formulaires
    Par paolo129 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 16/12/2008, 17h14
  3. message d'erreur lors de la compil des pages JSP
    Par pcouas dans le forum Jasper
    Réponses: 0
    Dernier message: 06/08/2008, 16h30
  4. Réponses: 2
    Dernier message: 23/06/2008, 17h12
  5. Message d'erreur lors de l'initialisation des queries
    Par Pierre FORAZ dans le forum XMLRAD
    Réponses: 2
    Dernier message: 21/09/2007, 15h26

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