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

VB.NET Discussion :

Vérification de mot de pass multiple.


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut Vérification de mot de pass multiple.
    Bonjour a tous, je me penche sur une façon de faire fonctionner mon système de mot de pass depuis un moment et j'ai finalement décide de demander de laide.

    J'ai une forme qui contient 3 textbox et 3 checkbox.
    Voici l'image de la forme en question:
    Nom : LoginForm.PNG
Affichages : 113
Taille : 7,2 Ko
    Chaque checkbox est relier a une des 3 textbox et détermine si elle est "Enabled" ou non.

    Je voudrait un exemple de code qui me permettrai de seulement vérifier les mot de pass dans les textbox qui son "Enabled".

    Merci d'avance.

  2. #2
    Membre très actif Avatar de oussi
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 192
    Par défaut
    Salut,

    Je n'ai pas vraiment compris ce que tu veux mais je vais quand même te proposer ma modeste aide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If(textbox1.Enabled=True) Then
         'ton code de vérification
    End If
    Est ce que c'est ce que tu veux?
    @++

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut
    Salut,
    Cela résout une partie du problème.
    Le code que tu a proposé ne vérifie qu'une seule textbox.

    Je voudrait quelque chose comme:
    Nom : LoginFormEx.PNG
Affichages : 123
Taille : 17,2 Ko
    Faire une liste des textbox qui sont "Enabled".
    Vérifier si les mot de pass des textbox de la liste sont correct.
    Si oui, ouvrir l'application

    Merci pour l'aide,
    A+

  4. #4
    Membre Expert Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Par défaut
    XD
    y a rien de compliqué je pense,
    juste un peut de logique et un algorithme devrait couler de source

    ce que tu veut c'est:
    - vérifier en temps réel les mots de passe ??
    - ou lorsque tu click sur le bouton Login ??

    fesont simple,
    disons que c'est lorsque tu click sur le btLogin
    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
    Private Sub btLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btLogin.Click
     
            If CheckBox1.Checked = True Then
                  'Vérification du Mot de Passe - Joueur 1
            End If
     
     
            If CheckBox2.Checked = True Then
                  'Vérification du Mot de Passe - Joueur 2
            End If
     
     
            If CheckBox3.Checked = True Then
                  'Vérification du Mot de Passe - Joueur 3
            End If
        End Sub
    après a toi de faire un truc qui empéche de passer outre cette page si un mot de passe est érroné

  5. #5
    Membre Expert Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Par défaut
    Tu peut aussi blinder ta page en n'autorisant l'accès aux textBox que si les joueurs sont sélectionnés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
            If CheckBox1.Checked = True Then
                'Tu autorise la saisie que si le J1 a été choisi
                txtJ1.Enable = True
            Else
                'Pense a vider le Texte sa peut embéter mais sa blinde en sécurité
                txtJ1.Text = Nothing
                txtJ1.Enable = False
            End If
        End Sub

    PS: désolé, j'avais pas tout lus ... tu a déjà du faire la mm chose
    dit moi s'il te manque des trucs

  6. #6
    Membre très actif Avatar de oussi
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 192
    Par défaut
    Salut Sytec373,
    Il faut juste que tu fasse la même chose pour les autres textboxs

    Ou un code plus beau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For each(Textbox item in TaGroupBox.Controls)
          If(item.Enabled = True) Then
                 'ton code de verification
          End If
    Next
    Remarque : TaGroupBox est le nom de la groupbox qui contient tes Textbox.
    Item est la textbox en cours.

    Si ta pas compris je peux réexpliquer.

    @++

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut
    Merci pour tous ceux qui aide.

    J'ai encore deux petit problèmes.

    #1: Par quoi dois-je remplacer le (texbox item)... Textbox.control?

    #2: Comment je peux faire pour associer la textbox (Celle qui est en vérification dans la loop) avec le bon mot de pass. Car chaque textbox a un mot de pass unique.

    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
     Private Sub Log_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Log_btn.Click
     
    'i est le nombre de vérification réussie.        
    dim i as integer =0
    'n est le nombre de vérification.
    dim n as integer = 0
     
    'Problème 1
            For each(TextBox) in GroupBox1.Controls)
                If (item.Enabled = True) Then
                    n += 1
    'Problème 2
                    If TextBox.text = "mot de pass" Then
                        i += 1
                    End If
                End If
            Next
     
    'Je regarde si le nombre de vérification est = au vérif. réussites
    If i = n then
      Form1.Show()
      Me.Close()
     
    Else
    MsgBox("Un des mot de pass est incorrecte.", MsgBoxStyle.OkOnly Or MsgBoxStyle.Critical, "Érreur")
     
    EndIf
     
        End Sub
    Merci,
    A+

  8. #8
    Membre Expert Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Par défaut
    a mon avis tu t'embête pour rien ...
    des algorithme tu aura l'occasion d'en utiliser par la suite
    mais la tu peut faire simple je pense

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
        Private Sub btLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btLogin.Click
            'Si un erreur se produit sur le login
            On Error GoTo ErrLogin
     
            'Init de la variable Test qui va autoriser le login
            Dim BoolLogin As Boolean = False
     
            'Vérification du Mot de Passe - Joueur 2
            If CheckBox1.Checked = True Then
                If TextBox1.Text = "mot de pass 1" Then
                    BoolLogin = True
                Else
                    BoolLogin = False
                    GoTo ErrLogin 'Erreur on va directement a "ErrLogin" sans faire le reste
                End If
            End If
     
            'Vérification du Mot de Passe - Joueur 2
            If CheckBox2.Checked = True Then
                If TextBox2.Text = "mot de pass 2" Then
                    BoolLogin = True
                Else
                    BoolLogin = False
                    GoTo ErrLogin 'Erreur on va directement a "ErrLogin" sans faire le reste
                End If
            End If
     
            'Vérification du Mot de Passe - Joueur 3
            If CheckBox3.Checked = True Then
                If TextBox3.Text = "mot de pass 3" Then
                    BoolLogin = True
                Else
                    BoolLogin = False
                    GoTo ErrLogin 'Erreur on va directement a "ErrLogin" sans faire le reste
                End If
            End If
     
            If BoolLogin = True Then
                'Connexion autorisé
            End If
     
     
    ErrLogin:
            MsgBox("Erreur sur le mot de passe")
     
        End Sub
    le code reste a travailler je pense

  9. #9
    Membre émérite Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Par défaut
    Il veut juste simplifier son code

    Imagine qu'il ait 20 checkbox ....

  10. #10
    Membre Expert Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Par défaut
    ah bah vue comme sa, je suis d'accord pour l'algo
    *mais il a pas précisé que cété pour faire a grande echelle ....*
    pas d'idées pour son problème methylene ?

    petit problée de parenthése la je crois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For each(TextBox) in GroupBox1.Controls)
     
    'plutôt comme sa
    For each(TextBox) in (GroupBox1.Controls)
    'ou
    For each((TextBox) in GroupBox1.Controls)
    'ou
    For each(TextBox) in GroupBox1.Controls()
    j'ais pas vraiment le temps d'essayer le code, c'est juste des idées

    aprés pour
    associer la textbox avec le bon mot de pass
    tu peut utiliser un tableau de string
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim MotDePasse(3) as string
     
    MotDePasse(1) = "100"
    MotDePasse(2) = "tintin"
    MotDePasse(3) = "a55g4"
    et je me souvient que en vb6
    tu pouvais avoir un tableau de TextBox, genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TextBox(1)
    TextBox(2)
    '...
    si tu peut travailler avec des tableaux (de textBox et de String)
    tu devrais facilement trouver un alogo

  11. #11
    Membre émérite Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Par défaut
    Bonjour,

    Puisque Hunteshiva veut que je m'en mêle , voilà un petit bout de code.

    Voilà pour ton problème 1 et 2, pour "automatiser" le 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
            Dim ctrl As Control
     
            For Each ctrl In GroupBox1.Controls
     
                'Teste si le contrôle "observé" contient "Textbox" dans son nom
                If InStr(ctrl.Name, "TextBox", CompareMethod.Text) Then
     
                    'Si oui il regarde s'il est "actif", et exécute le code derrière
                    If ctrl.Enabled = True Then
     
                        'Ton code à éxecuter
     
                    End If
     
                    'Vérifie si le mot de passe entré est le bon, tu peux très bien mettre
                    'la i ème valeur d'un tableau de mots de passe, dans ce cas-là, je te
                    'conseillerais un tableau de Textbox.name
                    If InStr(ctrl.Text, "Ton mot de passe", CompareMethod.Text) Then
     
                    'ce qui se passe au login
     
                    Else
     
                    MsgBox("Erreur, mot de passe incorrect")
     
                    End If
     
                End If
     
            Next ctrl
    PS : je ne sais pas exactement dans quel ordre la boucle for va parcourir la collection GroupBox1.Controls, donc le plus simple et de récuperer le nom de chacun dans un tableau, de le sort, et ensuite de comparer avec le tableau de mot de passe.

    Bref code à adapter, comme toujours ...

  12. #12
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Bonjour,

    La solution de methylene me semble pas trop mal, à ceci près que si les TextBox ont été renommées (ce que je suggère toujours de faire, c'est plus agréable pour celui qui reprend un code de pas avoir à jongler entre l'interface pour savoir si c'est bien celui-là Label42 ) ça ne fonctionnera plus aussi bien, donc voici ce que je propose :

    Code VB.Net : 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
     
    For Each ctrl As Control In PassBox.Controls
     
        'Si le contrôle n'est pas actif, peu importe son type, on passe au suivant
        If Not ctrl.Enabled Then Continue For
        'Continue vers le contrôle suivant s'il n'est pas de type TextBox
        If Not TypeOf ctrl Is TextBox Then Continue For
     
        'Note, on peut faire les deux tests précédents ensemble, séparés par un OrElse
     
        'Si ici on avait besoin de propriétés spécifiques au TextBox, donc non accessible à un Control, faire:
        'Dim txtBox As TextBox = DirectCast(ctrl, TextBox)
     
        'Si l'on a besoin de "numéroter" les TexBox, penser à la propriété Tag
        Dim index As Integer
        If Not Integer.TryParse(Ctrl.Tag, index) Then
            'Ce Tag n'est pas numérique, donc traitement adéquat, par exemple simplement
            Continue For
        End If
     
        'Ici le code de vérification à éxecuter de préférence l'appel à une méthode de vérification qui renvoie un Boolean donc schématiquement
        If VerifyPassword(ctrl.Text, index) Then
            'Login réussi pour ce TextBox
        Else
            'Echec, et son traitement
        End If
    Next ctrl

    Ensuite si tu utilises une des dernières version du Framework à savoir la version 3.5 (à vérifier ici) ou la version 4 tu peux tirer parti des possibilités offertes par Linq et mes méthodes d'extension:

    Code VB.Net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    'Ceci va permettre de ne boucler que sur les TextBox de la collection de contrôles, et uniquement ceux dont la propriété Enabled est à True
    For Each txtBox As TextBox In PassBox.Controls.OfType(Of TextBox).Where(Function(t) t.Enabled)
        'Ici on peut remettre le contenu de l'exemple précédent, en commençant directement avec la déclaration de index
        Dim index As Integer
        '...
    Next txtBox

    Voilà, j'espère que cela aura été utile

  13. #13
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut
    Merci pour tout l'aide et sans délai.

    J'ai finalement choisi la solution la plus simple (celle de hunteshiva) puisque mes connaissances sont assé sommaire en programmation.

    La seule chose que j'ai ajouter est un "Exit sub" car le message de mauvais mot de pass s'affichait même si le login était réussie.

    Voici mon code finale:
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Private Sub Log_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Log_btn.Click
     
            'Init de la variable Test qui va autoriser le login
            Dim BoolLogin As Boolean = False
     
            'Vérification du Mot de Passe - Joueur 1
            If P1_cb.Checked = True Then
                If P1_pass.Text = "1" Then
                    BoolLogin = True
                Else
                    BoolLogin = False
                    GoTo ErrLogin 'Erreur on va directement a "ErrLogin" sans faire le reste
                End If
            End If
     
            'Vérification du Mot de Passe - Joueur 2
            If P2_cb.Checked = True Then
                If P2_pass.Text = "2" Then
                    BoolLogin = True
                Else
                    BoolLogin = False
                    GoTo ErrLogin 'Erreur on va directement a "ErrLogin" sans faire le reste
                End If
            End If
     
            'Vérification du Mot de Passe - Joueur 3
            If P3_cb.Checked = True Then
                If P3_pass.Text = "3" Then
                    BoolLogin = True
                Else
                    BoolLogin = False
                    GoTo ErrLogin 'Erreur on va directement a "ErrLogin" sans faire le reste
                End If
            End If
     
            If BoolLogin = True Then
                TBSH.Show()
                Me.Close()
    'Le Exit Sub dont je parlait.
                Exit Sub
     
            End If
     
    ErrLogin:
            MsgBox("Un des mot de pass est incorecte.", MsgBoxStyle.OkOnly Or MsgBoxStyle.Critical, "Érreur")
     
        End Sub

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

Discussions similaires

  1. service web + vérification de mot de passe
    Par wasper dans le forum VB.NET
    Réponses: 3
    Dernier message: 12/08/2010, 21h15
  2. [XL-2003] Vérification de mot de passe en Vba
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/06/2009, 11h51
  3. Génération et vérification de mots de passe
    Par Invité dans le forum Sécurité
    Réponses: 1
    Dernier message: 15/06/2009, 02h21
  4. Vérification de mot de passe
    Par kh-san dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 02/09/2007, 01h33
  5. Vérification de mot de passe et regex
    Par joseph_p dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 21/03/2006, 12h32

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