User et mot de passe dans une db en .net

Signaler
Messages postés
167
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 janvier 2006
-
Messages postés
167
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 janvier 2006
-
bonjour,

je suis en train de créer un écran de login pour un de mes prog.

j'ai créé une db avec une seule table dans laquelle on retrouve les noms et mot de passe des utilisateurs.

dans ma page de login, j'ai mis une combo que je rempli avec un datareader et qui va contenir les noms des utilisateurs.

en dessous de la combo, j'ai une textbox qui va permettre l'utilisateur d'entrer son mot de passe

mais je ne sais vraiment pas comment m'y prendre pour que lorsqu'un
utilisateur choisit son nom dans la combo, le test vérifie dans la db
si c'est bien son mot de passe.



je sais c'est pas très clair, mais je crois que vous me comprenez, (du moins j'espère)

qqn a une idée?

34 réponses

Messages postés
328
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
24 novembre 2005

lu
tu ve pouvoir récuperer la valeur de ta combo?

Fabrice
Messages postés
167
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 janvier 2006

imagine, dans la combo il ya user1
user2
user3
user1 a comme mot depasse : 123456
user2 a comme mot depasse : 111111
user3 a comme mot depasse : 172589

et je voudrais que lorsque user2 choisit son nom dans la combo, on teste si son mot de passe est bien celui qui lui est attribué dans la db (donc ici, 111111).
Messages postés
328
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
24 novembre 2005

oui, mais VB est un langage evenementiel.
dc la vérification,tu ve kel se fasse kan,parce qu'avec ce que je lis,
j'ai l impression que tu ve kil saisisse le MDP et ke kan il clic sur la combo,on test voir si c bon.
tu ve mettre un bouton non??
Messages postés
167
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 janvier 2006

oui je met un bouton

l'utilisateur choisit son nom dans la combo
a partir de ce moment, il entre son mot de passe (qui est dans la db)
puis il clique sur un bouton valider.
si le mot de passe qu'il a entré est bien celui qui lui correspond dans la db, l'application s'ouvre, sinon on redemande le bon mot de passe.
Messages postés
328
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
24 novembre 2005

d accord.perso,je fai un select * from user where mdp .. and login ...
et si il retourne une ligne c OK sinon PAS OK
je suis assez kler?
Messages postés
167
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 janvier 2006

ah oui très clair.
mais ya un truc que je ne comprend pas, c'est le fait qu'il me retourne une ligne. que veux-tu qu'il me renvoie?

donc en fait, je dois faire :
dim requete as string = "select * from utilisateurs where login="+'"combobox1.text"'+"and password="+'"textbox1.text"' ";

mais quand je fais ca, je fais quoi avec???
désolé de faire mon embétant comme ca mais je débute en vb.net
Messages postés
328
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
24 novembre 2005

dim requete as string = "select * from utilisateurs where login="+'"combobox1.text"'+"and password="+'"textbox1.text"' ";

t sur que c 'est des + ?? c pa des & ??

ca a part.
tu execute cette requete et tu fai un recordcount par exemple.
si ton recordcount = 1 alors tu pe le laisser entrer :-)
sinon non..

tu voulai la syntaxe pr executer une requete?
tu es deja connecté?
Messages postés
167
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 janvier 2006

je suis déjà connecté.
sorry pour les plus, c'est "l'habitude" du c#....
pour remplir ma combo par exemple, je fais ca :

OleDbConnection1.Open()



Dim dr
As OleDbDataReader = OleDbCommand1.ExecuteReader()



Do
While dr.Read()


ComboBox1.Items.Add(dr.GetString(0))



Loop

et le commandtext de ma command est : select login from utilisateurs;

ton recordcount, il ne fait que compter les enregistrements dans la table. je ne vois pas comment l'utiliser dans mon prog
Messages postés
328
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
24 novembre 2005

oki.
bon,
ex : user = fab pass=pass dans le BDD
ds ton form user=fab pass=pass

dim requete as string = "select * from utilisateurs where login="+'"combobox1.text"'+"and password="+'"textbox1.text"' ";

le recordcount va te renvoyer-> 1

si ds ta form user = fab2 pass=pass
ton recordcount va te renvoyer 0

capich?
Messages postés
167
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 janvier 2006

jusque la ça va.
juste une chose, le recordcount, je dois le déclarer ou pas? parce que je n'ai jamais utilisé ce brol
Messages postés
328
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
24 novembre 2005

par exemple
normalement c'est
NbeRetourné=RECORSET.recordcount
msgbox NbeRetourné
Messages postés
167
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 janvier 2006

quand je met ca, je n'ai meme pas la possibilité de mettre un recordcount.
je travaille avec une oledb, pas une ado
Messages postés
328
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
24 novembre 2005

désolé j'utilise pa de oledb..
sinon tu fai req=count(*) from ....
et tu récupere la valeur de retour.
tu sé récupéré le résultat d'une req ou pas du tout??
Messages postés
167
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 janvier 2006

ben heuuuuuuuuuu

non
Messages postés
328
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
24 novembre 2005

ben je dirai

Dim oConnection As New SqlConnection(strConnexion)
Dim oledbCommand1 As New SqlCommand(strRequete, oConnection)


Dim dr
As OleDbDataReader = OleDbCommand1.ExecuteReader()



TON RESULTAT =dr.Read()
Messages postés
167
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 janvier 2006

je vais essayer ca mais ce soir. j'ai autre souci majeur juste à l'instant,
on en reparle demain?
merci bcp de ta patience et de ton aide
Messages postés
328
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
24 novembre 2005

pas de probleme.
a dem1 alors :-)
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
29
Je vais vous paraitre pénible, mais au diable où est la sécurité ?



si tu utilises ca comme requete SQL : dim requete as string = "select * from utilisateurs where login="+'"combobox1.text"'+"and password="+'"textbox1.text"' ";
j'espere que ce n'est pas une application critique ...



parce que si un petit malin veut se connecter il n'a qu'a mettre dans le password : ' or 1=1 --



ta chaine SQL sera donc :



select * from
utilisateurs where login='Cyri'l and password='' or 1=1 -- ' et la il
va te retourner au moins une ligne, l'utilisateur aura accés à ton
application.



La sécurité de nos jours c'est primordial




<hr>

Cyril - http://Hoshimi.CodeS-SourceS.fr
Messages postés
167
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 janvier 2006

non il faut pas sécuriser à ce point, mais c'est bien d'avoir fait la remarque...
merci
Messages postés
328
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
24 novembre 2005

bonjour a tous.
merci pour ta remarque constructive,en effet j'avais vu ce point en cours mais j'aurai bien aimé avoir ta solution :-)

select * from utilisateurs where login='Cyri'l and password='' or 1=1 -- ' et la il va te retourner au moins une ligne, l'utilisateur aura accés à ton application.

tu dis au moins une ligne ou 1 ligne.
car mon test c'était = 1 et pas >=1
ca peut passer ?

Fabrice