Login + Registrierung ins Programm einbauen

    • VB.NET

    Es gibt 681 Antworten in diesem Thema. Der letzte Beitrag () ist von Higlav.

      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

      1. DROP TABLE IF EXISTS `benutzer`;
      2. CREATE TABLE `benutzer` (
      3. `ID` int(5) NOT NULL auto_increment,
      4. `Benutzername` varchar(255) default NULL,
      5. `Passwort` varchar(255) default NULL,
      6. `Email` varchar(255) default NULL,
      7. PRIMARY KEY (`ID`)
      8. ) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;


      2. Jetzt zum Programm :

      1.MD5 Sicherung

      Erstellt ein Modul mit folgendem Code :

      VB.NET-Quellcode

      1. Imports System.Security.Cryptography
      2. Imports System.Text
      3. Module md5
      4. Public Function MD5StringHash(ByVal strString As String) As String
      5. Dim MD5 As New MD5CryptoServiceProvider
      6. Dim Data As Byte()
      7. Dim Result As Byte()
      8. Dim Res As String = ""
      9. Dim Tmp As String = ""
      10. Data = Encoding.ASCII.GetBytes(strString)
      11. Result = MD5.ComputeHash(Data)
      12. For i As Integer = 0 To Result.Length - 1
      13. Tmp = Hex(Result(i))
      14. If Len(Tmp) = 1 Then Tmp = "0" & Tmp
      15. Res += Tmp
      16. Next
      17. Return Res
      18. End Function
      19. End Module

      Quelle : 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

      VB.NET-Quellcode

      1. Imports MySql.Data.MySqlClient
      importieren


      VB.NET-Quellcode

      1. Dim conn As MySqlConnection
      2. conn = New MySqlConnection
      3. conn.ConnectionString = "server=serverip;" _ 'Hier gibt ihr die Server IP ein
      4. & "user id=benutzername;" _ 'Hier gibt ihr euren Benutzernamen ein
      5. & "password=passwort;" _ 'Hier gibt ihr euer Passwort ein
      6. & "database=datenbankname" 'Hier gibt ihr die Datenbank ein auf der die Tabelle benutzer liegt
      7. Try
      8. conn.Open() ' Verbindung öffnen
      9. Catch myerror As MySqlException
      10. MsgBox("Keine Verbindung zur Datenbank : " & myerror.Message.ToString) ' Falls Fehler : Fehler anzeigen
      11. End Try
      12. Dim benutzer As String = MD5StringHash(txt_benutzer.Text)
      13. Dim passwort As String = MD5StringHash(txt_passwort.Text)
      14. Dim myAdapter As New MySqlDataAdapter
      15. 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
      16. Dim myCommand As New MySqlCommand
      17. myCommand.Connection = conn
      18. myCommand.CommandText = SQLAbfrage
      19. myAdapter.SelectCommand = myCommand
      20. Dim myData As MySqlDataReader
      21. myData = myCommand.ExecuteReader() ' Hier startet man die SQL Abfrage
      22. If myData.HasRows Then ' Wenn die Abfrage Einträge enthält / also der Benutzer und das Passwort stimmen überein
      23. MsgBox("Einloggen erfolgreich !")
      24. conn.Close()
      25. conn.Open()
      26. Else 'Sonst wird angezeigt das die Daten falsch sind
      27. MsgBox("Fehler Code 2 : Falsche Daten")
      28. 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

      VB.NET-Quellcode

      1. Imports MySql.Data.MySqlClient
      importieren

      VB.NET-Quellcode

      1. If txt_passwort.Text = txt_passwort_w.Text Then ' Prüft ob die Passwörter übereinstimmen
      2. 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
      3. If txt_email.Text = txt_email_w.Text Then ' Wennn die Emails übereinstimmen dann Trage ein
      4. Dim conn As MySqlConnection
      5. conn = New MySqlConnection
      6. conn.ConnectionString = "server=serverip;" _ 'Hier gibt ihr die Server IP ein
      7. & "user id=benutzername;" _ 'Hier gibt ihr euren Benutzernamen ein
      8. & "password=passwort;" _ 'Hier gibt ihr euer Passwort ein
      9. & "database=datenbankname" 'Hier gibt ihr die Datenbank ein auf der die Tabelle benutzer liegt
      10. Try
      11. conn.Open() ' Verbindung öffnen
      12. Catch myerror As MySqlException
      13. MsgBox("Keine Verbindung zur Datenbank : " & myerror.Message.ToString)
      14. End Try
      15. Dim myAdapter As New MySqlDataAdapter
      16. 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
      17. Dim myCommand As New MySqlCommand
      18. myCommand.Connection = conn
      19. myCommand.CommandText = SQLAbfrage
      20. myAdapter.SelectCommand = myCommand
      21. Dim myData As MySqlDataReader
      22. myData = myCommand.ExecuteReader() ' Abfrage starten
      23. If myData.HasRows = 0 Then ' Wenn dieser Benutzername nicht existiert dann fang mit der Registrierung an
      24. conn.Close()
      25. conn.Open()
      26. Dim registerfinal As New MySqlDataAdapter
      27. Dim benutzer As String = MD5StringHash(txt_benutzer.Text)
      28. Dim passwort As String = MD5StringHash(txt_passwort.Text)
      29. myCommand.CommandText = "INSERT INTO benutzer(Benutzername, Passwort, Email)" _
      30. & "VALUES('" & benutzer & "','" & passwort & "','" & txt_email.Text & "')"
      31. myCommand.ExecuteNonQuery() ' SQL Abfrage starten und eintragen
      32. MsgBox("Der Account mit dem Namen : " & txt_benutzer.Text & " wurde erfolgreich erstellt")
      33. conn.Close()
      34. Else
      35. MsgBox("Dieser Benutzername existiert bereits")
      36. End If
      37. Else
      38. MsgBox("Die eingegebenen Emails stimmen nicht über ein !")
      39. End If
      40. Else
      41. MsgBox("Die eingegebenen E-Mails sind ungültig !")
      42. End If
      43. Else
      44. MsgBox("Die eingegebenen Passwörter stimmen nicht überein")
      45. End If


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

      Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Rokky“ ()

      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..)
      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“ ()

      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
      Wenn ich mich einloggen will kommt "falsche Daten"

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

      VB.NET-Quellcode

      1. Dim conn As MySqlConnection
      2. conn = New MySqlConnection
      3. conn.ConnectionString = "server=84.200.20.52;" & "user id=User;" & "password=PW;" & "database=Database;"
      4. Try
      5. conn.Open() ' Verbindung öffnen
      6. Catch myerror As MySqlException
      7. MsgBox("Keine Verbindung zur Datenbank : " & myerror.Message.ToString) ' Falls Fehler : Fehler anzeigen
      8. End Try
      9. Dim benutzer As String = MD5StringHash(TextBox1.Text)
      10. Dim passwort As String = MD5StringHash(TextBox2.Text)
      11. Dim myAdapter As New MySqlDataAdapter
      12. 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
      13. Dim myCommand As New MySqlCommand
      14. myCommand.Connection = conn
      15. myCommand.CommandText = SQLAbfrage
      16. myAdapter.SelectCommand = myCommand
      17. Dim myData As MySqlDataReader
      18. myData = myCommand.ExecuteReader() ' Hier startet man die SQL Abfrage
      19. If myData.HasRows Then ' Wenn die Abfrage Einträge enthält / also der Benutzer und das Passwort stimmen überein
      20. MsgBox("Einloggen erfolgreich !")
      21. conn.Close()
      22. conn.Open()
      23. Else 'Sonst wird angezeigt das die Daten falsch sind
      24. MsgBox("Fehler Code 2 : Falsche Daten")
      25. End If
      // 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?

      RE: Login + Registrierung ins Programm einbauen

      Rokky schrieb:



      1. Legt folgende Datenbank an :

      SQL-Abfrage

      1. DROP TABLE IF EXISTS `benutzer`;
      2. CREATE TABLE `benutzer` (
      3. `ID` int(5) NOT NULL auto_increment,
      4. `Benutzername` varchar(255) default NULL,
      5. `Passwort` varchar(255) default NULL,
      6. `Email` varchar(255) default NULL
      7. PRIMARY KEY (`ID`)
      8. ) 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.

      VB.NET-Quellcode

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


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

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Daisuki“ ()