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

C++Builder Discussion :

S'authentifier via une Table contenant les Identifiants et les Password [Débutant]


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 33
    Par défaut S'authentifier via une Table contenant les Identifiants et les Password
    Bonjour à tous

    Je me retrouve sur une Form avec 2 Tedit
    Identifiant et Mot de passe.

    Au depart j''étais passé par un moyen tout simple.

    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
     
    void __fastcall TForm4::Button1Click(TObject *Sender)
    {
    if(Edit1->Text=="admin" && Edit2->Text=="admin")       // Il faut que l'utilisateur entre admin / admin ...
    {
     MessageBeep(MB_ICONEXCLAMATION);                      // Va émettre un bip sonore de validation
     ShowMessage("Connexion Réussie");                          // Pop un message confirmant la validation
     Form5->Visible=true;                                        // Ouvre la fenêtre suivante
     Form5->DBGrid1->Columns->Items[0]->Visible=false;           // cache la colonne P_ID
     Form5->DBGrid2->Columns->Items[0]->Visible=false;           // Cache la colonne ID
    }
    else                                                     //... Sinon
    {
       MessageBeep(MB_ICONHAND);                                 //Va émettre un bip d'erreur
       ShowMessage("Acces Refusé, Réessayez");                      //Pop un message confirmant l'erreur
    }
    }
    On était obligé d'entrer admin/admin pour passer a la fenetre suivante(form5)
    Cependant il faut que je trouve un moyen pour qu'on puisse passer par plusieurs combinaison possible et les changer.

    J'ai donc créé une Table authentification dans ma base de données sql avec 2 Colonnes: Identifiant et MDP

    Il faudrait que lorsque je rentre un champs dans mes 2 Edits , ca verifie que ces champs sont dans la table de la base de données. Si oui ca nous permettrai de continuer

    (Dans le reste de mon projet j'utilise des composants ADO (ADOtable, ADOquery) que j'aimerai continuer a réutiliser plutot que des databases ou table ou query)

  2. #2
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Je n'ai pas compris ta question ?
    a tu un bout de code a nous proposer ?
    Merci
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Par défaut
    Bonjour,
    si j'ai bien compris essaye 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
    if((Edit1->Text==Table->FieldByName("Identifiant")->AsString)&&(Edit2->Text==Table->FieldByName("MDP")->AsString))
    {
     
    MessageBeep(MB_ICONEXCLAMATION);                     
     ShowMessage("Connexion Réussie");                        
     Form5->Visible=true;                                        
     Form5->DBGrid1->Columns->Items[0]->Visible=false;           
     Form5->DBGrid2->Columns->Items[0]->Visible=false;
     
    }
    else
    {
     
     MessageBeep(MB_ICONHAND);    
     
     ShowMessage("Acces Refusé, Réessayez");
     
     
    }

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 33
    Par défaut
    Salut ! Merci de ta réponse.
    Effectivement ça vérifie dans ma BDD si les valeurs y sont.

    Par contre je viens de découvrir un soucis
    Seulement la première ligne de la table est prise en compte

    Si j'ai d'autres valeurs par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Identifiant  / Mdp
    Admin       / Admin
    Test01     / Test01
    1234       / 5678
    .....
    Seul Admin Admin sera accepté pour continuer, Les autres lignes ne marcheront pas

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Par défaut
    Bonjour,
    oui effectivement le code est valable que pour un enregistrement de ta table.
    il faut que tu déroule tous les enregistrements de la table.
    je te propose 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
    24
    25
    26
    27
    28
    29
    30
    31
    bool test=false;
    AdoTable->First();
    while(!AdoTable->Eof)
    {
    if((Edit1->Text==AdoTable->FieldByName("Identifiant")->AsString)&&(Edit2->Text==AdoTable->FieldByName("MDP")->AsString))
    {
     
     
     test=true;
    }
    AdoTable->Next();
    }
     
    if(test==false)
    {
     
     MessageBeep(MB_ICONHAND);    
     
     ShowMessage("Acces Refusé, Réessayez");
     }
    else
    {
      if(test==true)
    {
    MessageBeep(MB_ICONEXCLAMATION);                     
     ShowMessage("Connexion Réussie");                        
     Form5->Visible=true;                                        
     Form5->DBGrid1->Columns->Items[0]->Visible=false;           
     Form5->DBGrid2->Columns->Items[0]->Visible=false;
    }
    }
    A vérifier.... bon courage

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 33
    Par défaut
    Je te remercie effectivement ça fonctionne.

    Maintenant niveau comprehension c'est ok presque pour tout. Je bloque juste sur 2 lignes au début

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ADOTable1->First();
    while(!ADOTable1->Eof)
    Tu peux m'expliquer ce que ça veut dire et ce que ça fait s'il te plait ?
    J'ai du mal à trouver des infos sur le "eof"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/05/2010, 15h55
  2. une table contenant les contraintes
    Par miloon dans le forum Administration
    Réponses: 3
    Dernier message: 12/05/2009, 10h44
  3. Réponses: 2
    Dernier message: 07/11/2005, 18h54
  4. tableau dynamique via une table sous sql server
    Par bibi2607 dans le forum ASP
    Réponses: 5
    Dernier message: 21/02/2005, 15h45

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