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 :

comparaison dans "If"


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 135
    Par défaut comparaison dans "If"
    Bonjour,

    j'ai un formulaire d'authentification, et pour savoir si les logines et les mot de passe sont bon je les compare aux vrais que je vais chercher dans une base (avant la comparaison). Voici 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
     
    Dim strConnec As String = "*******"
            Dim Connexion1 As SqlConnection = New SqlConnection(strConnec)
            Dim Command1 As SqlCommand = Connexion1.CreateCommand()
            Command1.CommandText = "select login, Passe from Clients"
            Connexion1.Open()
            Dim Reader1 As SqlDataReader = Command1.ExecuteReader()
            While Reader1.Read
                Dim log As String = Reader1.GetString(0)
                Dim pas As String = Reader1.GetString(1)
                If UsernameTextBox.Text = log And PasswordTextBox.Text = pas Then
                    MessageBox.Show("C bon", "yes", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                    Bienvenue.ShowDialog()
                Else
                    MessageBox.Show("Votre login ou votre mot de passe est incorrect, " & UsernameTextBox.Text & " , " & log & " , " & PasswordTextBox.Text & " , " & pas, "Erreur d'authentification", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                    Exit Sub
                End If
            End While
            Reader1.Close()
            Connexion1.Close()

    Mon pb c'est que le if ne veut pas fonctionner avec les variables log et pass, idem si je met directement reader1.getstring.... Le pire c'est que je fais afficher les variables dans la messagebox et qu'elle sont bonnes
    Par contre ce qui marche c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If UsernameTextBox.Text = "toto" And PasswordTextBox.Text = "123" Then
    Le pb c'est que j'ai besoin de les tirer de la base je peux pas fonctionner comme ça.

    Est ce quelqu'un voit le probléme ? , en plus y'a aucune erreur

    Merci bcp pour votre aide

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    deja c'est pas la bonne méthode pour faire ca !

    il faut faire une requete type
    SELECT 1 FROM table WHERE login= 'xxx' et pass = 'xxx'

    si ca te retourne au moins une ligne ca veut dire que le mot de passe existe
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    ça veut dire quoi 'ça marche pas' ? Peux tu préciser ?

    Autre chose, ça te sert à quoi de récupérer tous les mots de passe ?
    Tu n'as qu'a compter le nombre de lignes dans la table dont le login et le mdp sont egaux à ceux qui sont saisis. Si c'est 0, le login a échoué, sinon le login est valide.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 135
    Par défaut
    ouais alors j'ai oublié de préciser certaines choses:

    la premiere est que pour des raisons qui serait assez longue à exliquer, cette requete se fait sur une base locale qui se met à jour sur une principale. Le truc c'est que ds cette base locale il n'y a que les données du client qui la possede. Ca a pour conséquences parmi les tables qu'il y a je me retrouve avec la table client n'a qu'une seule ligne, celle du client qui la possede, c'est pas top mais bon c'est comme ça.

    Donc du coup ma requete ne récupére pas tous les mots de passe des clients mais juste un.

    Quand je dis ça marche pas c'est que l'appli ne rentre pas dans le if mais dans le else comme si les identifiants étaient faux.

    Je vais essayer ça :SELECT 1 FROM table WHERE login= 'xxx' et pass = 'xxx'
    vopir si ça marche mieux.

    Merci pour votre aide

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