Controle d acces

bm1982 Messages postés 58 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 10 juin 2012 - 19 nov. 2009 à 13:53
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 - 23 nov. 2009 à 11:09
salut a tous .
j'ai une base de donnée MYSQL
ET un formulaire form1 en vb.net[list]
form1 a 2 textbox
textbox 1 pour sair le nom utilisateur
et texbox 2 le mot de passe
et un bouton(bt10) pour lancer 2 autres form :form2 et form3.
ma base de données ayant ''groupe'' comme nom.
et une table COMPTE avec les champ
"user" nom utilisateur
"niveau " niveau d accès" 2 Niveau bas et haut
"password" mot de passe.
je veux qu'en fonction du user et du mot de passe,on recupere le niveau et que l'user soit dirigé sur le form 2 pour niveau bas et form3 pour haut.

Voici ce que j ai fai.
---DANS GÉNÉRAL JE TAPE CECI
Imports MySql.Data.MySqlClient
Dim Conn As MySqlConnection
Conn = New MySqlConnection()
Conn.ConnectionString = "server=13.10.11.12;user id=root;password=0000;database=groupe"
---Au click sur btn10
private sub btn10_click()
---?comment faire le code pour faire
--- le controle
end sub

27 réponses

lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
19 nov. 2009 à 15:09
Bonjour,

Voici le principe :

tu récupères déjà dans tes textbox les infos rentrées.
utilisateur=textbox1.text
pass=textbox2.text
requete sql pour récupérer les user/password/groupe:
Sql = "select groupe from COMPTE where user='" & utilisateur & "' AND password='" & pass & "'

En supposant qu'un utilisateur et mot de passe sont unique dans ta table, tu récupères après exécution de cette requete l'enregistrement via un recordset.
En fonction de sa valeur, tu ouvres la form adaptée.


L'expérience, c'est une connerie par jour, mais jamais la même..
0
bm1982 Messages postés 58 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 10 juin 2012
19 nov. 2009 à 15:16
Ton idée semble etre bonne.
S il te plait comment recuperer cela via un recordset ?
Si possible kel code puis je taper
merci!!!
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
19 nov. 2009 à 15:39
tonrecordset=conn.execute(sql)
La suite est plutot valable quand il y a plusieurs enregistrements, tu ne devrais pas avoir besoin de la boucle
With tonRecordset
If .RecordCount <> 0 Then 'si il y a au moins un enregistrement
.MoveFirst 'se placer sur le 1er
Do While Not .EOF 'boucle sur tous les enregistrements
vargroupe=.Fields("groupe") 'peut-être à modifier pas testé
.MoveNext
Loop
else
Messagebox.show ("Nom d'utilisateur ou mot de passe non renseigné dans la base")
End if
.Close
End With

if vargroupe=valeur1 then
form2.show
elseif vargroupe=valeur2 then
form3.show
end if

L'expérience, c'est une connerie par jour, mais jamais la même..
0
bm1982 Messages postés 58 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 10 juin 2012
19 nov. 2009 à 16:32
Imports MySql.Data.MySqlClient
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Conn As MySqlConnection
Conn = New MySqlConnection
Conn.ConnectionString = "Server=102.8.1.35;user id=root;password=0000;database=tcc-rh_vers1"
Conn.Open()
MsgBox("succès")
End Sub
End Class

que dois-je ajouter?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
19 nov. 2009 à 16:51
Ben ce que je t'ai donné à adapter surement un peu.


L'expérience, c'est une connerie par jour, mais jamais la même..
0
bm1982 Messages postés 58 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 10 juin 2012
19 nov. 2009 à 16:56
ok
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
19 nov. 2009 à 21:33
lolokun, Attention au thème VB.Net et non VB6 !

Pour le code ca donne à peu près :

    Private Sub btn_Connect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Connect.Click

        Dim Conn As New MySqlConnection("Server=102.8.1.35;uid=root;pwd=0000;Database=tcc-rh_vers1")

        Try
            Conn.Open()
            Dim Query As String = "SELECT groupe FROM COMPTE where user='" & txt_User.Text & _
                                  "' AND password='" & txt_Pass.Text & "'"
            'A noter que txt_User et txt_Pass sont deux textbox servant à l'authentification.
            Dim MySqlAdaper As New MySqlDataAdapter(Query, Conn)
            Dim UsersLevel As New DataTable
            MySqlAdaper.Fill(UsersLevel)
            If UsersLevel.Rows.Count = 0 Then
                MessageBox.Show("Le mot de passe et l'identifiant saisis sont invalides !", _
                                "Erreur d'authentification", _
                                MessageBoxButtons.OK, _
                                MessageBoxIcon.Exclamation)
            Else
                'A noter ici que tu ne renseigne pas le type de données pour ce champ
                'Comme tu le dis il y a deux niveau haut et bas, je vais donc considéré le champ comme un type String
                Dim Level As String = UsersLevel.Rows(0)!niveau
                If Level = "Haut" Then
                    'form2.show
                Else
                    'form3.show
                End If
            End If
        Catch
            MessageBox.Show("Echec de connection au server", _
                            "Echec de connexion", _
                            MessageBoxButtons.OK, _
                            MessageBoxIcon.Exclamation)
        Finally
            If Conn.State <> ConnectionState.Closed Then
                Conn.Close()
            End If
        End Try

    End Sub



J'ai cependant quelque remarque à te faire :

- 1\ On évite au possible de demander du code tout prêt (Règlement CS) et on fait une recherche minimum avant de poster. Tu utilise MySQL Connector, tu as su téléchargé le composant, tu TE dois de savoir lire la documentation en ligne fournie avec, très bien détaillé et en français qui plus est !!!

- 2\ Ne donne jamais les adresse IP/Identifiants de quoi que ce soit sur un forum sauf si tu tien à te faire pirater ton serveur.

- 3\ Le code plus haut est situé dans un bouton cmd_Connect, et deux textbox on été créés sur le formulaire, adapte le code à ton besoin. Tu as de la chance, j'ai répondu à ton post car la réponse de lolokun est incomplète (vb6) et pouvait t'induire en erreur, même si celui-ci t'as répondu de son bon vouloir pour t'aider, mais généralement on ne répond pas aux demandes de code, on aide les développeurs qui ont des problèmes, on ne code pas gratuitement pour les gens.


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
bm1982 Messages postés 58 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 10 juin 2012
20 nov. 2009 à 09:09
ok merci
mais saches que je suis tout a fait un debutant.
j essaye de faire quelque chose et quand je suis bloqué je m arrete et fais des recherches c 'est ainsi que je suis venu ici
pour ce qui est de l ip du server sache que ce tout a fait un exple.

Mais ok et merci pour ton aide.
Mais s il te plait puis je avoir une liste de documentation sur vb.net et les bases de données
ainsi que la programmation reseau....

BAK....................
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
20 nov. 2009 à 09:13
Bonjour Mayzz,

Oups oui effectivement ptit plantage de catégorie je m'excue pour ma réponse à côté de la plaque.

Je suis d'accord avec ton point 3, cependant contrairement à d'autres qui demandent vraiment du code tout fait en exigeant, et sans politesse, sa question était bien posée et il avait qaund même commencé un bout de code..

C'est sûr qu'avec une recherche il aurait pu trouver par lui-même on va dire que c'était ma BA de la journée :p


L'expérience, c'est une connerie par jour, mais jamais la même..
0
bm1982 Messages postés 58 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 10 juin 2012
20 nov. 2009 à 09:20
Rien de grave LOLOKUN
j ai été très bien heureux de vos aides ....Mayzz et toi.
je vais essayé le code et je sais m 'en sortir .
Encore BIG THANKS a vous 2 ok
BAK.......................
nbje veux une liste de documentation sur vb.net et les bases de données MYSQL ainsi QUE la grogrammation reseau.
0
bm1982 Messages postés 58 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 10 juin 2012
20 nov. 2009 à 10:12
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Conn As New MySqlConnection("server=192.168.1.35;user id=root;password=0000;database=tcc-rh_vers1")
Try
Conn.Open()
Dim query As String = " select niveau From Compte where user='" & textbox1.text & AND "'code='"&TextBox2.Text&"'"
Dim MysqlAdaper As New MySqlDataAdapter(Query, Conn)
Dim Userslevel As DataTable
MysqlAdaper.Fill(Userslevel)
If Userslevel.Rows.Count = 0 Then
MessageBox.Show("Nom utilisateur et Mot de passe invalides", "Erreur d'authentification", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Else
Dim level As String = Userslevel.Rows(0)!niveau
If level = "haut" Then
MsgBox("super utilisateur")
Else
MsgBox("utilisateur moyen")
End If
End If
Catch
MsgBox("Echec de connection au serveur")
Finally
If Conn.State <> ConnectionState.Closed Then
Conn.Close()
End If



End Try
End Sub

Voici les erreurs que on me dit:
Dim MysqlAdaper As New MySqlDataAdapter(query, Conn)------> query n est pas declaré
0
bm1982 Messages postés 58 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 10 juin 2012
20 nov. 2009 à 12:11
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Conn As New MySqlConnection("Server=1.8.1.3;uid=root;pwd=0000;Database=tcc-rh_vers1")
Try
Conn.Open()
Dim Query As String = "SELECT niveau FROM COMPTE where user='" & TextBox1.Text & _
"' AND password='" & TextBox2.Text & "'"
Dim MySqlAdaper As New MySqlDataAdapter(Query, Conn)
Dim UsersLevel As New DataTable
MySqlAdaper.Fill(UsersLevel)
If UsersLevel.Rows.Count = 0 Then
MessageBox.Show("Le mot de passe et l'identifiant saisis sont invalides !", _
"Erreur d'authentification", _
MessageBoxButtons.OK, _
MessageBoxIcon.Exclamation)
Else
Dim Level As String = UsersLevel.Rows(0)!niveau
If Level = "Haut" Then
MsgBox("haut niveau")
Else
MsgBox("autre")
End If
End If
Catch
MessageBox.Show("Echec de connection au server", _
"Echec de connexion", _
MessageBoxButtons.OK, _
MessageBoxIcon.Exclamation)
Finally
If Conn.State <> ConnectionState.Closed Then
Conn.Close()
End If
End Try

End Sub
..................................................
OK WAYZ....
SUPPOSONS QUE JE VEUILLE AFFICHER UN MESSAGE EN FONCTION DU NIVEAU D UTILISATEUR .
Jai toujours le meme message quant le mot de passe est bon ou pas ''Echec de connection au server''
Quelle est la solution maintenant
$
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
20 nov. 2009 à 12:37
Re,

Bien en fait tu as un échec de connexion car ton programme n'arrive pas à se connecter au serveur, vérifie que celui-ci est actif, que le port par défaut de MySQL est ouvert dans le pare-feu, et dans le routeur, que MySQL accepte les connexions distantes, vérifie aussi que tu n'aurais pas un parefeu qui empeche la connexion de l'extérieur (depuis ton poste). Vérifie aussi l'adresse IP entrée dans la chaîne de connexion.

Question: Ou se trouve le serveur ? Est-ce le tien ou celui d'un hébergeur ? Si c'est un hébergeur, est-il mutualisé ou serveur dédié ?

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
bm1982 Messages postés 58 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 10 juin 2012
20 nov. 2009 à 12:39
en local
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
20 nov. 2009 à 13:01
Ton serveur est en local... Quel adresse IP as-tu mis ?



Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
bm1982 Messages postés 58 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 10 juin 2012
20 nov. 2009 à 13:04
1.8.1.3 SOIT MOI IP
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
20 nov. 2009 à 13:06
Essaye avec l'IP 127.0.0.1 pour voir ce que ca donne.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
bm1982 Messages postés 58 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 10 juin 2012
21 nov. 2009 à 08:41
ok
0
bm1982 Messages postés 58 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 10 juin 2012
22 nov. 2009 à 10:32
Maitenant je voudrai attaquer le module Manipulation de la base de données....
Soit 2 tables produit et commande DANS LA base PDC
produit(ref,designation)
commande(code,date,ref,qté)

je suis suis le formulaire commande: frmcde ..
Imports MySql.Data.MySqlClient
Dim Conn As MySqlConnection
Conn = New MySqlConnection()

'connection a la base au chargement de la feuille

Private sub frmcde_load()
oConn.ConnectionString = "server=1.2.3.4;user id=root;password=0000;database=PDC"
END SUB

'ajout d une commade avec le bouton enreg
private sub btn-enreg_click ()
Dim Conn As MySqlConnection
Conn = New MySqlConnection()

Conn.ConnectionString = "server=1.2.3.4;user id=root;password=0000;database=PDC"

oConn.Open()

Dim myCommand As New MySqlCommand
Dim MyAdapt As New MySqlDataAdapter
Dim myDataTable As New DataTable
Dim strQuery As String


myCommand.Connection = Conn
myCommand.CommandText =("insert client values"(Me.txtcode.text& ", " & me.txtref.text& ", " & me.txtqte.text& ", " & me.txtmontant.text)

MyAdapt.SelectCommand = myCommand
MyAdapt.Fill(myDataTable)

For i As Integer = 0 To myDataTable.Rows.Count - 1
MsgBox(myDataTable.Rows(i)("monChamp").ToString)
Next
endsub


Est ce que cela peut marcher si on veut ajouter une commande dans la base.
0
bm1982 Messages postés 58 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 10 juin 2012
22 nov. 2009 à 10:40
Au fait je suis un debutant ....
certes je suis pas informaticien ni etudiant en informatique....
moi je suis Eleve ingenieur en Biotechnologie

je veux apprendre à developper des logiciels.tous les cours que j ai pu avoir sur le net ne sont pas precis quant au base de données...

Tu n'es pas mon prof mais sache que ta reaction de la fois derniere ma bocou plu car tu as ete clair et sincere ....ce sont des qualités qui manquent a nos hommes d ojourdhui.
Merci bocou j atends ta reponse
bonne journéé a toi
BAK.....................
0
Rejoignez-nous