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

NetBeans Java Discussion :

Problème page d'authentificaton login


Sujet :

NetBeans Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 132
    Points : 67
    Points
    67
    Par défaut Problème page d'authentificaton login
    bonjour,
    je suis en train de dévellopper une interface graphique d'authentification qui est composé par un username et un password et un bouttom login.l'éxécution se fait au niveau de bouttom login . les données insérées dans les champs vont etre comparé par les données d'une table de base de données . s'il sont conformes une message correct apparait si non un message invalid apparait.
    mon problème que le procédure de comparison ne se fait pas et une fenetre toujours apparait indique que les champs password et username sont vides malgré l'insertion des données.veuillez m'aider s'il vous plait.












    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
    31
    32
    33
    34
    35
    try 
         {
             /*String Sql = "Select * from personne where username=? and password=?";   
            ps = con.prepareStatement(Sql);
            ps1.setString(1,getString(txtuser));
            ps2.setString(2,getString(txtuser));
     
            rs  = ps.executeQuery(Sql); 
                boolean next = rs.next();*/
             con = getConnection("jdbc:mysql://localhost:3306/nabil","root",""); 
             Statement st=con.createStatement(); 
             ResultSet rs=st.executeQuery("Select    username,password   from   personne    where username = " +txtuser.getText()+"and password = "+txtpass.getText()+""); 
              while(rs.next()){
     
               String username1 =rs.getString("username"); 
               String password1 =rs.getString("password");
               String user=getString(txtuser);
               String pass=getString(txtpass);
            if ((user.equals(username1)) && (pass.equals(password1)))
            {
                JOptionPane.showMessageDialog(null,"correct");
                // principale s = new principale  ();
                // s.setVisible(true);
            }
            else
            {
                JOptionPane.showMessageDialog(null,"invalid username or password");
     
            }
            }
         }
         catch (Exception e) {
               JOptionPane.showMessageDialog(null,"vide");
     
         }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    On t'a déjà répondu 2 fois qu'il fallait que tu modifies ta requête comme çà : String Sql = "SELECT * FROM table_personne WHERE username = ? and password = ?";.

    Combien de fois tu vas poser la question ?

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 132
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    On t'a déjà répondu 2 fois qu'il fallait que tu modifies ta requête comme çà : String Sql = "SELECT * FROM table_personne WHERE username = ? and password = ?";.

    Combien de fois tu vas poser la question ?
    merci pour votre réponse. j'ai changé mais rien la mème problème s'affiche.

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Le problème c'est que tu as changé le reste du code aussi.

    String Sql = "SELECT * FROM table_personne WHERE username = ? and password = ?";.ça fait une requête paramétrée. Après je ne dis pas si la requête est correcte ou pas par rapport à ce que tu veux faire, c'est un autre problème. Mais pour que cette requête fonctionne, il faut lui passer les paramètres nécessaires.

    Or tu as commenté le code qui faisait ça (enfin, je vois aussi que tu as changé le second paramètre...) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ps = con.prepareStatement(Sql);
            ps.setString(1,txtuser.getText());
            ps.setString(2,txtpass.getText());
     Rs = ps.executeQuery(Sql);
    Maintenant cette requête te permet de récupérer un enregistrement qui correspond à l'utilisateur de nom tapé dans txtuser et de mot de passe tapé dans txtpass. Ou pas d'enregistrement s'il y en a pas qui correspond.

    Et tu peux récupérer les informations de l'enregistrement trouvé comme tu as fait.

    Sur les autres aspects :

    1. Pourquoi la requête que tu fais ne fonctionne pas ?
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      ResultSet rs=st.executeQuery("Select    username,password   from   personne    where username = " +txtuser.getText()+"and password = "+txtpass.getText()+"");
      Le problème c'est que là, le nom et le mot de passe sont mis directement dans la requête et que SQL va croire qu'il s'agit de noms de champs. Il faudrait y mettre des quotes ou double-quotes, ou je ne sais quoi que le SQGD demande.

      Pour cette raison, il est préférable d'utiliser un PreparedStatement (ce n'est pas seule, mais ça tu pourras voir ça dans la FAQ dont je t'avais donné le lien dans l'autre discussion). Comme ça tu n'as pas besoin de gérer toi-même les quotes.
    2. Ensuite, ce que tu cherches à faire est assez étrange :
      • tu fais une requête pour chercher des données d'un utilisateur alors que ces données sont saisies dans le formulaire, pour les afficher
      • alors certes, la requête permet de vérifier que ces données correspondent bien à un enregistrement dans la base (et dans le code que tu avais dans les autres discussions ça avait un sens, puisqu'il s'agit autoriser la connexion à l'application)
      • mais là, à quoi ça sert d'afficher ce qui est déjà affiché ?
      • je ne parle même pas du problème qu'il peut y avoir à afficher un mot de passe : en clair, c'est plutôt gênant, et en masqué, ça ne sert à rien (autant afficher directement des * sans faire de requête)
      • je ne parle pas du fait que le mot de passe soit en clair dans la base, ce qui est très dangereux : je pense que tu n'en es pas encore à gérer ce genre de subtilité.
      • Si le but est de retrouver le mot de passe d'un utilisateur pour en faire je ne sais quoi, la requête ne doit faire le where que sur le nom d'utilisateur.


Discussions similaires

  1. Problème page login
    Par bouzoubad dans le forum Android
    Réponses: 9
    Dernier message: 31/01/2013, 21h19
  2. Problème page de login
    Par HakunA59 dans le forum Silverlight
    Réponses: 4
    Dernier message: 17/12/2010, 15h37
  3. problème page de login
    Par cyril911 dans le forum Langage
    Réponses: 3
    Dernier message: 18/04/2007, 16h14
  4. [MySQL] Problème sur des comptes (login/mdp)
    Par vincedjs dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 13/03/2006, 15h41
  5. Réponses: 12
    Dernier message: 24/09/2003, 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