In diesem Tutorial zeig ich euch wie ihr einen Login + Registrierung mit MYSQL programmiert.
1. Was brauchen wir?
Eine Mysql Datenbank die Externen Zugriff Erlaubt, die bekommen wir z.b. hier kostenlos:

MYSQL

2. Tabelle in Datenbank anlegen
Ihr geht auf

Da loggt ihr euch ein!

Dann wählt ihr eure Datenbank aus!

Dann klickt ihr auf das sql zeichen!

Dann sollte sich ein Fenster öffnen und da gebt ihr folgendes ein und klick OK!
Code:
CREATE TABLE `login` ( `ID` int(5) NOT NULL auto_increment, `Benutzername` varchar(255) default NULL, `Passwort` varchar(255) default NULL, `Email` varchar(255) default NULL, PRIMARY KEY (`ID`) ) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;
Code:
CREATE TABLE `login` (
Code:
`ID` int(5) NOT NULL auto_increment, `Benutzername` varchar(255) default NULL, `Passwort` varchar(255) default NULL, `Email` varchar(255) default NULL,
Code:
PRIMARY KEY (`ID`) ) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;

Dann öffnet ihr Visual Basic 2008 und erstellt eine Windows Forms anwendung!

Dann öffnet ihr den Projektmappen - Explorer und klickt auf MyProjekt!

Dann klickt ihr auf Verweise -> Hinzufügen und wählt MySQL.Data aus!


3. Login
Dann fügt ihr mindestens im Login 2 TextBoxen und 1 Button hinzu!
Wichtig! Die TextBox für den Usernamen heißt: txt_benutzer und die für Passwort: txt_passwort
Die Form kann dann so aussehen:

Dann machen wir doppelklick auf die Forum und ersetzen den bisherigen code durch diesen:
Code:
' Importieren
Imports System.Security.Cryptography
Imports System.Text
Imports MySql.Data.MySqlClient
' Ein Modul das das Passwort nicht im Klartext gespeichert wird sondern in
' MD5
Module md5
Public Function MD5StringHash(ByVal strString As String) As String
Dim MD5 As New MD5CryptoServiceProvider
Dim Data As Byte()
Dim Result As Byte()
Dim Res As String = ""
Dim Tmp As String = ""
Data = Encoding.ASCII.GetBytes(strString)
Result = MD5.ComputeHash(Data)
For i As Integer = 0 To Result.Length - 1
Tmp = Hex(Result(i))
If Len(Tmp) = 1 Then Tmp = "0" & Tmp
Res += Tmp
Next
Return Res
End Function
End Module
' Anfang der Form1
Public Class Form1
' Das Button1_Click Event
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Conn Definieren
Dim conn As MySqlConnection
conn = New MySqlConnection
' Die mysql daten eingeben, das er weis auf welchem benutzer und host und ' db die tabelle liegt
conn.ConnectionString = "server=serverip;" _ 'Hier gibt ihr die Server IP ein, die kommentare bei server ip etc. löschen, da sonst errors auftauchen
& "user id=benutzername;" _ 'Hier gibt ihr euren Benutzernamen ein
& "password=passwort;" _ 'Hier gibt ihr euer Passwort ein
& "database=datenbankname" 'Hier gibt ihr die Datenbank ein auf der die Tabelle login liegt
' Er versucht sich zu Verbinden
Try
conn.Open() ' Verbindung öffnen
Catch myerror As MySqlException
' Falls ein Verbindung Fehler auftaucht kommt eine MsgBox
MsgBox("Keine Verbindung zur Datenbank : " & myerror.Message.ToString) ' Falls Fehler : Fehler anzeigen
End Try
' Benutzer Definieren und gleich in MD5 Umwandeln
Dim benutzer As String = MD5StringHash(txt_benutzer.Text)
' Passwort definieren und gleich in MD5 Umwandeln
Dim passwort As String = MD5StringHash(txt_passwort.Text)
' myAdapter definieren
Dim myAdapter As New MySqlDataAdapter
' Er sucht Die Tabelle Login in der angegebenen Datenbank
' Er schreibt in das Benutzername Feld der Tabelle den verschlüsselten Text
' von benutzer, dasselbe mit Passwort
Dim SQLAbfrage As String = "SELECT * FROM login WHERE Benutzername='" + Replace(benutzer, " ", "") + "' AND Passwort='" & Replace(passwort, " ", "") & "'"
' myCommand definieren
Dim myCommand As New MySqlCommand
myCommand.Connection = conn
myCommand.CommandText = SQLAbfrage
myAdapter.SelectCommand = myCommand
Dim myData As MySqlDataReader
myData = myCommand.ExecuteReader() ' Hier startet man die SQL Abfrage
If myData.HasRows Then ' Wenn die Abfrage Einträge enthält / also der Benutzer und das Passwort stimmen überein
MsgBox("Einloggen erfolgreich !")
conn.Close()
conn.Open()
Else
MsgBox("Fehler Code 2 : Falsche Daten")
'Sonst wird angezeigt das die Daten falsch sind
End If
End Sub
End Class
' Der Rest müsste eigentlich klar sein.
4. Registrieren
Dann gehen wir auf Neues Element Hinzufügen -> Form Hinzufügen
Da brauchen wir mindestens 5 TextBoxen und 1 Button.
Namen:
Benutzername = txt_benutzer
Passwort = txt_passwort
Passwort Wiederholen = txt_passwort_w
Email: txt_email
Email Wiederholen: txt_email_w
Das kann dann so aussehen:

Dann doppelklick auf die Form und ersetzen den bestehenden code durch diesen:
Code:
' Importieren
Imports System.Security.Cryptography
Imports System.Text
Imports MySql.Data.MySqlClient
' Ein Modul das das Passwort nicht im Klartext gespeichert wird sondern in
' MD5
Module md5
Public Function MD5StringHash(ByVal strString As String) As String
Dim MD5 As New MD5CryptoServiceProvider
Dim Data As Byte()
Dim Result As Byte()
Dim Res As String = ""
Dim Tmp As String = ""
Data = Encoding.ASCII.GetBytes(strString)
Result = MD5.ComputeHash(Data)
For i As Integer = 0 To Result.Length - 1
Tmp = Hex(Result(i))
If Len(Tmp) = 1 Then Tmp = "0" & Tmp
Res += Tmp
Next
Return Res
End Function
End Module
' Ich hab dieses Modul jetzt nicht kommentiert, da der code gleich ist wie oben.
' Anfang der Form1
Public Class Form1
' Das Button1_Click Event
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Jetzt prüft er ob die 2 eingegeben passwörter übereinstimmen
If txt_passwort.Text = txt_passwort_w.Text Then ' Prüft ob die Passwörter übereinstimmen
' Jetzt prüft er ob die email ein @ enthält
If txt_email.Text.Contains("@") And txt_email_w.Text.Contains("@") Then ' Prüft ob die E-Mails ein @ enthalten.Damit wird geschaut ob die Email gültig ist
' Jetzt überprüft er ob die emails übereinstimmen
If txt_email.Text = txt_email_w.Text Then ' Wenn die Emails übereinstimmen dann Trage ein
' conn definieren
Dim conn As MySqlConnection
conn = New MySqlConnection
' AB Hier in mysql daten ändern
conn.ConnectionString = "server=serverip;" _ 'Hier gibt ihr die Server IP ein, kommentare wieder löschen
& "user id=benutzername;" _ 'Hier gibt ihr euren Benutzernamen ein
& "password=passwort;" _ 'Hier gibt ihr euer Passwort ein
& "database=datenbankname" 'Hier gibt ihr die Datenbank ein auf der die Tabelle benutzer liegt
' Ab Hier nichts mehr ändern
' Er versucht die Verbindung zu öffnen
Try
conn.Open()
' Wenn ein Fehler auftaucht erscheint MsgBox!
Catch myerror As MySqlException
MsgBox("Keine Verbindung zur Datenbank : " & myerror.Message.ToString)
End Try
' Das selbe wie oben
Dim myAdapter As New MySqlDataAdapter
Dim SQLAbfrage As String = "SELECT * FROM login WHERE Benutzername='" + txt_benutzer.Text + "'" ' Erstmal eine SQL Abfrage die überprüft ob es den Benutzernamen schon gibt
Dim myCommand As New MySqlCommand
myCommand.Connection = conn
myCommand.CommandText = SQLAbfrage
myAdapter.SelectCommand = myCommand
Dim myData As MySqlDataReader
myData = myCommand.ExecuteReader() ' Abfrage starten
If myData.HasRows = 0 Then ' Wenn dieser Benutzername nicht existiert dann fang mit der Registrierung an
conn.Close()
conn.Open()
Dim registerfinal As New MySqlDataAdapter
Dim benutzer As String = MD5StringHash(txt_benutzer.Text)
Dim passwort As String = MD5StringHash(txt_passwort.Text)
http://www.elitepvpers.com/forum/epvp-coders-tutorials/587234-vb-2008-how-login-und-registrierung-ein-programm-einbauen.html#post5424689 myCommand.CommandText = "INSERT INTO benutzer(Benutzername, Passwort, Email)" _
& "VALUES('" & benutzer & "','" & passwort & "','" & txt_email.Text & "')"
myCommand.ExecuteNonQuery() ' SQL Abfrage starten und eintragen
MsgBox("Der Account mit dem Namen : " & txt_benutzer.Text & " wurde erfolgreich erstellt")
conn.Close()
Else
MsgBox("Dieser Benutzername existiert bereits")
End If
Else
MsgBox("Die eingegebenen Emails stimmen nicht über ein !")
End If
Else
MsgBox("Die eingegebenen E-Mails sind ungültig !")
End If
Else
MsgBox("Die eingegebenen Passwörter stimmen nicht überein")
End If
end sub
End Class
Hoffe euch hat das Tutorial Gefallen!
BITTE THX DRÜCKEN!






