Du bist nicht angemeldet.

Rokky

Registrierter Benutzer

  • »Rokky« ist männlich
  • »Rokky« ist der Autor dieses Themas

Beiträge: 134

Dabei seit: 5. Juni 2008

Hilfreich-Bewertungen: 37

  • Private Nachricht senden

1

Freitag, 12. Juni 2009, 20:50

Login + Registrierung ins Programm einbauen

Willkommen zu meinem ersten Tutorial

In diesem Tutorial werde ich euch zeigen wie einfach man ein Login + Registrierung ins eigene Programm einbauen kann.

Ihr braucht erstmal eine MySQL Datenbank die auch externe zugriffe erlaubt.

Dann fangen wir an :

1. Legt folgende Datenbank an :

SQL-Abfrage(n)

1
2
3
4
5
6
7
8
DROP TABLE IF EXISTS `benutzer`;
CREATE TABLE `benutzer` (
  `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;


2. Jetzt zum Programm :

1.MD5 Sicherung

Erstellt ein Modul mit folgendem Code :

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Imports System.Security.Cryptography
Imports System.Text
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

Quelle : http://dotnet-snippets.de

2. Login :
So kann die Form aussehen :


Auf den Button "Login" legt ihr folgenden Code :

Und nicht vergessen ihr müsst Mysql für .NET installiert haben und

Visual Basic Quellcode

1
Imports MySql.Data.MySqlClient
importieren


Visual Basic Quellcode

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
   Dim conn As MySqlConnection
    conn = New MySqlConnection
    conn.ConnectionString = "server=serverip;" _ 'Hier gibt ihr die Server IP ein
                                         & "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
    Try
        conn.Open() ' Verbindung öffnen
    Catch myerror As MySqlException
        MsgBox("Keine Verbindung zur Datenbank : " & myerror.Message.ToString) ' Falls Fehler : Fehler anzeigen
    End Try

    	Dim benutzer As String = MD5StringHash(txt_benutzer.Text)
    	Dim passwort As String = MD5StringHash(txt_passwort.Text)

    	Dim myAdapter As New MySqlDataAdapter
    	Dim SQLAbfrage As String = "SELECT * FROM benutzer WHERE Benutzername='" + Replace(benutzer, " ", "") + "' AND Passwort='" & Replace(passwort, " ", "") & "'" ' Das ist die Abfrage welche Prüft ob der Account existiert.Die txt_benutzer ist die Textbox in der der Benutzername eingeben wird und txt_passwort bekommt das Passwort
    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 'Sonst wird angezeigt das die Daten falsch sind
        MsgBox("Fehler Code 2 : Falsche Daten")
    End If


3. Register
So kann die Registrierungs Form aussehen


Auf den Button "Registrierung" legt ihr folgenden Code :

Und nicht vergessen ihr müsst Mysql für .NET installiert haben und

Visual Basic Quellcode

1
Imports MySql.Data.MySqlClient
importieren

Visual Basic Quellcode

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
48
49
   If txt_passwort.Text = txt_passwort_w.Text Then ' Prüft ob die Passwörter übereinstimmen
        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
            If txt_email.Text = txt_email_w.Text Then ' Wennn die Emails übereinstimmen dann Trage ein
                Dim conn As MySqlConnection
                conn = New MySqlConnection
                  conn.ConnectionString = "server=serverip;" _ 'Hier gibt ihr die Server IP ein
                                         & "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
                Try
                    conn.Open() ' Verbindung öffnen

                Catch myerror As MySqlException
                    MsgBox("Keine Verbindung zur Datenbank : " & myerror.Message.ToString)
                End Try

                Dim myAdapter As New MySqlDataAdapter
                Dim SQLAbfrage As String = "SELECT * FROM benutzer 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)
                    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


So das wars ich hoffe es hat euch weitergebracht. ;)

Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »Rokky« (14. Juni 2009, 12:17)


Boolean

Registrierter Benutzer

Beiträge: 291

  • Private Nachricht senden

2

Freitag, 12. Juni 2009, 21:04

Bitte Passwörter nie im Klartext speichern!
In .Net ist md5 mit nur einer Zeile realisierbar ;)

Und du solltest noch erwähnen falls jemand das SQL Query für die DB ausführt, keine Tabelle namens "benutzer" vorhanden sein darf, bzw von irgendeiner Webanwendung benutzt werden darf, sonst ist alles futsch.
Und die ID wird wohl niemals 55 Zeichen benötigen, das ist nur Speicherverbrauch.
Und Autoincrement = 9 muss ja auch nicht sein :P
Ansonsten ein gutes Tutorial für Anfänger.
Evtl solltest du die User noch darauf hinweisen das es leicht ist .Net Code wiederherzustellen, und daher evtl keine wichtige Datenbank verwendet werden sollte, da jeder User Root-Zugriff darauf haben kann wenn er will, und dann alles manipulieren kann. - Allein deshalb schon nie Passwörter in Klartext speichern!
Ein paar Änderungen und das Tutorial wird dem ein oder anderen User evtl weiterhelfen können ;)
(Die Hinweise sind nicht böse gemeint, aber ich finde das sollte gesagt werden, für User die das einfach nur kopieren und sich dann wundern..)

Rokky

Registrierter Benutzer

  • »Rokky« ist männlich
  • »Rokky« ist der Autor dieses Themas

Beiträge: 134

Dabei seit: 5. Juni 2008

Hilfreich-Bewertungen: 37

  • Private Nachricht senden

3

Freitag, 12. Juni 2009, 21:09

OK Das mit dem klartext stimmt. Ich werde das Tut noch ein wenig abändern.

Hab einiges vergessen weil ichs schnell gemacht habe ;)

Trotzdem danke für den hinweis(e).

EDIT : HAB DAS WICHTIGSTE ÜBERARBEITET. MD5 Sicherung ist jetzt integriert.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Rokky« (12. Juni 2009, 21:22)


  • »xXStayAloneXx« ist männlich

Beiträge: 1 146

Dabei seit: 22. Mai 2009

Frühere Benutzernamen: xXMichaelXx

Hilfreich-Bewertungen: 14

  • Private Nachricht senden

4

Freitag, 12. Juni 2009, 21:34

Hmm das mit dem SQL Befehl im MyPHPAdmin geht nicht.
Da kommt immer:
#1067 - Invalid default value for 'Email'

Warum?
whitehouse:~$ rm -f /bin/laden

  • »xXStayAloneXx« ist männlich

Beiträge: 1 146

Dabei seit: 22. Mai 2009

Frühere Benutzernamen: xXMichaelXx

Hilfreich-Bewertungen: 14

  • Private Nachricht senden

5

Freitag, 12. Juni 2009, 21:42

Hab das Problem gelöst, aber hab schon wieder das nächste:
Wie installiere ich MySQL?
Ich habe Visual Studio 2008.
Weil wenn ich das Importe, dann unteringelt der mir das grünlich.
whitehouse:~$ rm -f /bin/laden

Rokky

Registrierter Benutzer

  • »Rokky« ist männlich
  • »Rokky« ist der Autor dieses Themas

Beiträge: 134

Dabei seit: 5. Juni 2008

Hilfreich-Bewertungen: 37

  • Private Nachricht senden

6

Freitag, 12. Juni 2009, 21:45

Einfach installieren hier der Link : http://dev.mysql.com/get/Downloads/Conne…pub/misc/mysql/

und dann unter Projekt eingenschaften - > Verweise -> Mysql zum verweis hinzufügen

  • »xXStayAloneXx« ist männlich

Beiträge: 1 146

Dabei seit: 22. Mai 2009

Frühere Benutzernamen: xXMichaelXx

Hilfreich-Bewertungen: 14

  • Private Nachricht senden

7

Freitag, 12. Juni 2009, 21:52

Habs installiert, aber unter Projekt>Verweis hinzufügen (Bin in der Kartei ".NET") gibts kein MySQL.
whitehouse:~$ rm -f /bin/laden

Rokky

Registrierter Benutzer

  • »Rokky« ist männlich
  • »Rokky« ist der Autor dieses Themas

Beiträge: 134

Dabei seit: 5. Juni 2008

Hilfreich-Bewertungen: 37

  • Private Nachricht senden

8

Freitag, 12. Juni 2009, 21:55

hast du deinen computer nach der installation neugestartet ?

  • »xXStayAloneXx« ist männlich

Beiträge: 1 146

Dabei seit: 22. Mai 2009

Frühere Benutzernamen: xXMichaelXx

Hilfreich-Bewertungen: 14

  • Private Nachricht senden

9

Freitag, 12. Juni 2009, 21:56

Nein.
Muss ich :S
Meine Eltern sind nicht da.
Und bei meinem PC ist BIOS PW drin....
Das heißt sie müssten es eingeben.
Sie kommen aber erst um 12 Uhr wieder.
Da schlaf ich schon.
Gibts keine andere möglichkeit?
whitehouse:~$ rm -f /bin/laden

Rokky

Registrierter Benutzer

  • »Rokky« ist männlich
  • »Rokky« ist der Autor dieses Themas

Beiträge: 134

Dabei seit: 5. Juni 2008

Hilfreich-Bewertungen: 37

  • Private Nachricht senden

10

Freitag, 12. Juni 2009, 22:01

Geh unter Verweise -> Hinzufügen -> Durchsuchen -> C:/Programme -> Mysql -> MySQL Connector Net 5.2.5 -> Binaries
-> .NET 2.0 -> MySql.Data.dll auswählen ;)

  • »xXStayAloneXx« ist männlich

Beiträge: 1 146

Dabei seit: 22. Mai 2009

Frühere Benutzernamen: xXMichaelXx

Hilfreich-Bewertungen: 14

  • Private Nachricht senden

11

Freitag, 12. Juni 2009, 22:07

Nein schon gut.
nach dem ich vs 2008 neugestartet hab gings auch!
whitehouse:~$ rm -f /bin/laden

  • »xXStayAloneXx« ist männlich

Beiträge: 1 146

Dabei seit: 22. Mai 2009

Frühere Benutzernamen: xXMichaelXx

Hilfreich-Bewertungen: 14

  • Private Nachricht senden

12

Freitag, 12. Juni 2009, 22:14

Alles geht, außer die Verbindung zur DB.
Ich habe alles richtig angegeben.
Ich benutze die DB von dem Off Topic angebot.
Das "DB gratis" oder so.
Er hat da extra geschrieben, das es mit VB geht.
Daten sind 100% richtig.
Fehler:
Access denied for Mike@localhost Using Passwort: YES

habe aber alle rechte am server :O
whitehouse:~$ rm -f /bin/laden

Boolean

Registrierter Benutzer

Beiträge: 291

  • Private Nachricht senden

13

Freitag, 12. Juni 2009, 22:20

Ähm.. sicher auch die richtigen Daten eingegeben?

Rokky

Registrierter Benutzer

  • »Rokky« ist männlich
  • »Rokky« ist der Autor dieses Themas

Beiträge: 134

Dabei seit: 5. Juni 2008

Hilfreich-Bewertungen: 37

  • Private Nachricht senden

14

Freitag, 12. Juni 2009, 22:23

Ja überprüf nochmal deine Daten !

  • »xXStayAloneXx« ist männlich

Beiträge: 1 146

Dabei seit: 22. Mai 2009

Frühere Benutzernamen: xXMichaelXx

Hilfreich-Bewertungen: 14

  • Private Nachricht senden

15

Freitag, 12. Juni 2009, 22:29

Ich gebs auf..
ich werde das i-wie anders machen...
Ohne Datenbank, einfach mit My.Settings!
whitehouse:~$ rm -f /bin/laden

Boolean

Registrierter Benutzer

Beiträge: 291

  • Private Nachricht senden

16

Freitag, 12. Juni 2009, 22:55

Server-IP, Datenbank-Username, Datenbank-User-Passwort, Datenbank-Tabelle.. alles richtig eingegeben?

Toby

Gregor?

  • »Toby« ist männlich

Beiträge: 185

Dabei seit: 25. Juni 2008

Wohnort: Deizisau

Frühere Benutzernamen: Toby

Hilfreich-Bewertungen: 6

  • Private Nachricht senden

17

Freitag, 12. Juni 2009, 22:58

Wenn ich mich einloggen will kommt "falsche Daten"

So muss das doch sein: (Ich hab benutzer mit User getauscht)

Visual Basic Quellcode

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
    	Dim conn As MySqlConnection
    	conn = New MySqlConnection
    	conn.ConnectionString = "server=84.200.20.52;" & "user id=User;" & "password=PW;" & "database=Database;"
    	Try
        	conn.Open() ' Verbindung öffnen
    	Catch myerror As MySqlException
        	MsgBox("Keine Verbindung zur Datenbank : " & myerror.Message.ToString) ' Falls Fehler : Fehler anzeigen
    	End Try

    	Dim benutzer As String = MD5StringHash(TextBox1.Text)
    	Dim passwort As String = MD5StringHash(TextBox2.Text)

    	Dim myAdapter As New MySqlDataAdapter
    	Dim SQLAbfrage As String = "SELECT * FROM User WHERE Benutzername='" + Replace(benutzer, " ", "") + "' AND Passwort='" & Replace(passwort, " ", "") & "'" ' Das ist die Abfrage welche Prüft ob der Account existiert.Die txt_benutzer ist die Textbox in der der Benutzername eingeben wird und txt_passwort bekommt das Passwort
    	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 'Sonst wird angezeigt das die Daten falsch sind
        	MsgBox("Fehler Code 2 : Falsche Daten")
    	End If

Boolean

Registrierter Benutzer

Beiträge: 291

  • Private Nachricht senden

18

Freitag, 12. Juni 2009, 23:13

// Hab wohl zu schnell gelesen, der Code stimmt, aber MD5 ist trotzdem.. naja beim Benutzernamen?

Also Benutzername muss doch nicht wirklich in MD5 gespeichert werden..... Das macht das ganze doch ziemlich unübersichtlich.
Benutzername würde ich in Klartext speichern, Emailadresse evtl durch Blowfish o.ä. jagen um es Spammern schwerer zu machen, und Passwort, so wies eh schon ist, in MD5.
Aber ich würde die DB leeren, und den Benutzernamen in Klartext lassen, damit wird das ganze übersichtlicher zu handhaben, und mit einem Benutzernamen/Pseudonym fängt kaum einer was an.


// Edit: Hast du schon manuell in der DB nachgeschaut ob ein Eintrag vorhanden ist?

nikeee13

wegen des metrischen Systems

  • »nikeee13« ist männlich

Beiträge: 866

Dabei seit: 20. Februar 2009

Wohnort: Einbecker Bier!

Hilfreich-Bewertungen: 532

  • Private Nachricht senden

19

Freitag, 12. Juni 2009, 23:52

Schöner snippet! wüde aber schon fast nen tutorial sein (wenn du es mehr kommentieren würdest)

Daisuki

unregistriert

20

Samstag, 13. Juni 2009, 01:42

RE: Login + Registrierung ins Programm einbauen



1. Legt folgende Datenbank an :

SQL-Abfrage(n)

1
2
3
4
5
6
7
8
DROP TABLE IF EXISTS `benutzer`;
CREATE TABLE `benutzer` (
  `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;




du hast hier bei
"`Email` varchar(255) default NULL" das "," am ende vergessen.. ^^ wollt ich nur kurz sagen ..
auch wenn das als erster post evtl n bissle komisch kommt

naja btw.

Visual Basic Quellcode

1
2
3
4
5
conn.ConnectionString = "server=#########;"_ 'Hier gibt ihr die Server IP ein
                                         & "user id=#########;" _ 'Hier gibt ihr euren Benutzernamen ein
                                         & "password=#######;" _ 'Hier gibt ihr euer Passwort ein
                                         & "database=#######" 'Hier gibt ihr die Datenbank ein auf der die Tabelle benutzer liegt
        Try


hier bekomme ich bei "&" einen Syntaxfehler angezeigt... weis aber net warum :|

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Daisuki« (13. Juni 2009, 01:57)


Social Bookmarks