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
    Nouveau membre du Club
    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
    Points : 39
    Points
    39
    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 expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    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
    Points : 1 509
    Points
    1 509
    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
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  3. #3
    Nouveau membre du Club
    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
    Points : 39
    Points
    39
    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 expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    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
    Points : 1 509
    Points
    1 509
    Par défaut
    Ce qui revient à dire que ta variable $ret est toujours égale à false.

    Je peux avoir ta fonction connecter?
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  5. #5
    Nouveau membre du Club
    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
    Points : 39
    Points
    39
    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 expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    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
    Points : 1 509
    Points
    1 509
    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
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

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

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

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    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
    Points : 1 509
    Points
    1 509
    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é
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  9. #9
    Nouveau membre du Club
    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
    Points : 39
    Points
    39
    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 expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    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
    Points : 1 509
    Points
    1 509
    Par défaut
    Ton var_dump ($requette) te retourne bien quelque chose?
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  11. #11
    Nouveau membre du Club
    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
    Points : 39
    Points
    39
    Par défaut
    Il me retourne la requête select telle qu'elle a été écrite.

  12. #12
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    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
    Points : 1 509
    Points
    1 509
    Par défaut
    Je viens juste de tilter...
    Mais à quel moment tu l'exécutes ta requête?
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  13. #13
    Nouveau membre du Club
    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
    Points : 39
    Points
    39
    Par défaut
    Lors du submit

  14. #14
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    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
    Points : 1 509
    Points
    1 509
    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...
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

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

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

  16. #16
    Nouveau membre du Club
    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
    Points : 39
    Points
    39
    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 expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    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
    Points : 1 509
    Points
    1 509
    Par défaut
    Tu ne renvoie pas False, du coup il passe jamais dans ton else qui te permet l'affichage...
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

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, 18h06
  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, 18h14
  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, 17h30
  4. Réponses: 2
    Dernier message: 23/06/2008, 18h12
  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, 16h26

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