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

  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"

  7. #7
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 081
    Par défaut

    C'est une blaque ?
    Un petit Effort

    TDataSet
    TDataSet.Eof
    TDataSet.First()
    TADOTable
    TADOTable est un TCustomADODataSet qui hérite du TDataSet
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  8. #8
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Par défaut
    salut


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ADOTable1->First(); // en positionne sur  le premier enregistrement de la table 
     
    while(!ADOTable1->Eof)//  tant que la table n'est pas vide
    {
    ........
    ..//A faire ce que tu veut ......
    .......
    .......
     
    AdoTable->Next();// l'enregistrement suivant
    }

  9. #9
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Par défaut
    au hazard eof = End Of File ?
    je pense même que ça veut dire "tant que la table n'est pas arrivée à la fin".

    et je ne fais pas de C++ !

  10. #10
    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 vous remercie tous.
    Ca me semble logique maintenant

+ 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