Login System - Mysql (Mithilfe von PHP..)

    • VB.NET

    Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von picoflop.

      Login System - Mysql (Mithilfe von PHP..)

      Hallo erstmal an alle Forum Benutzer und Gäste..

      Mir ist in mehreren Threads aufgefallen, das Benutzer häufig ein Login System
      in ihren Anwendungen "implementieren" möchten.. Ich stelle heute nun
      eine Möglichkeit vor, wie ihr ein simples Login System realisieren
      könnt, und das ohne, externen Zugriff auf die Mysql Datenbank von einem
      Programm..


      Was ihr braucht:
      -Eine Mysql Datenbank (kriegt ihr bei fast jeden FTP Host dazu..) mit einer Tabelle namens "User"
      -Ein leeres PHP Script
      -Eine leere Form / neues Projekt
      -Einen FTP Account / Webspace

      Die Tabelle User muss folgende Einträge enthalten:
      passwort varchar 50
      username varchar 50



      VB-Code:
      Spoiler anzeigen

      VB.NET-Quellcode

      1. 'Imports Anweisungen
      2. Imports System.Security.Cryptography
      3. Imports System.Text
      4. Public Class Form1
      5. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
      6. 'Deklaration eines neuen WebClienten..
      7. Dim WebClient As New Net.WebClient
      8. 'Deklaration eines neuen Strings..
      9. Dim Passwort As String
      10. 'Der Text der TextBox2 wird in einen MD5-Hash verwandelt und der Variable "Passwort" zugewiesen..
      11. Passwort = GetMd5Hash(TextBox2.Text)
      12. 'Deklaration 2 neuer Strings..
      13. Dim Quelltext As String
      14. Dim AbfrageLink As String
      15. 'Der Link besteht aus folgenden Teilen:
      16. '-URL der Ziel Domain (Domain.de/login.php)
      17. '-Passwort (hinter ?pw=)
      18. '-Username (hinter &user=)
      19. 'Diese werden hier in der "AbfrageLink Variable zusammen gefügt..
      20. AbfrageLink = "http://Domain.de/login.php?pw=" & Passwort & "&user=" & TextBox1.Text
      21. 'Der WebClient lädt den Quelltext der Login.php Seite in die "Quelltext" Variable..
      22. Quelltext = WebClient.DownloadString(AbfrageLink)
      23. 'Deklaration 1 neuen String Arrays..
      24. Dim Temp() As String
      25. 'Der Quelltext wird nach jedem ; geteilt und der Variable "Temp" zugewiesen..
      26. Temp = Quelltext.Split(";")
      27. 'Deklaration 1 neuen Strings..
      28. Dim Wert As String
      29. 'Da der Quelltext nicht nur unseren Wert enthält, sondern auch ein paar Java Script Funktionen,
      30. 'müssen wir die erste Zeile unseres Quelltextes heraustrennen..
      31. For i As Integer = 0 To 0
      32. Wert = Temp(i)
      33. Next
      34. 'Wenn der Wert "Login True" ist, dann:
      35. If Wert = "Login True" Then
      36. 'Einloggvorgang erfolgreich beendet..
      37. MsgBox("Sie wurden erfolgreich eingeloggt!", MsgBoxStyle.Information, "Erfolgreich!")
      38. 'anders falls: (Wert = "Login False")
      39. Else
      40. 'Einlogg Vorgang fehlgeschlagen (Passwort falsch, Username falsch, User existiert nicht etc.)
      41. MsgBox("Sie konnten nicht eingeloggt werden, bitte überprüfen sie ihre Login Daten!", MsgBoxStyle.Critical, "Fehler!")
      42. TextBox1.Text = Nothing
      43. TextBox2.Text = Nothing
      44. End If
      45. End Sub
      46. 'Text zu MD5 Hash Siehe: http://msdn.microsoft.com/en-us/library/system.security.cryptography.md5.aspx
      47. Shared Function GetMd5Hash(ByVal input As String) As String
      48. Using md5Hash As MD5 = MD5.Create()
      49. Dim data As Byte() = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input))
      50. Dim sBuilder As New StringBuilder()
      51. Dim i As Integer
      52. For i = 0 To data.Length - 1
      53. sBuilder.Append(data(i).ToString("x2"))
      54. Next i
      55. Return sBuilder.ToString()
      56. End Using
      57. End Function
      58. End Class




      PHP-Script:
      Spoiler anzeigen

      PHP-Quellcode

      1. <?
      2. //Verbindung zur Datenbank wird hergestellt
      3. $verbindung = mysql_connect("Adresse zur Datenbank", "Username" , "Passwort")
      4. or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
      5. //Datenbank wird ausgewählt
      6. mysql_select_db("Datenbank Name") or die ("Datenbank konnte nicht ausgewählt werden");
      7. //Die Variablen Passwort und Username werden aus der URL ausgelesen
      8. $passwort=$_GET["pw"];
      9. $username=$_GET["user"];
      10. //In der Tabelle werden alle Einträge ausgewählt (SELECT * FROM User), wo der Username (username) mit dem in der URL vorhandenen Username übereinspricht (LIKE)
      11. //Das ganze System ist dabei auf einen Eintrag beschränkt (LIMIT 1)
      12. $abfrage = "SELECT * FROM User WHERE username LIKE '$username' LIMIT 1";
      13. $ergebnis = mysql_query($abfrage);
      14. $row = mysql_fetch_object($ergebnis);
      15. //Wen das Passwort oder der Username in der URL nicht gegeben ist, oder das Passwort nicht mit dem Passwort in der Datenbank übereinstimmt dann:
      16. if($passwort == "" or $username == "" or $row->passwort !== $passwort)
      17. {
      18. //Soll das Script die Meldung Login False ausgeben
      19. echo "Login False;";
      20. }
      21. else
      22. {
      23. //Andersfalls gibt das Script die Meldung Login True aus (Login erfolgreich..)
      24. echo "Login True;";
      25. }
      26. ?>




      Ich hoffe, es ist alles gut auskommentiert. Bei Unklarheiten fragt bitte..
      Ich hoffe auf Kritik, Anmerkungen und/oder Verbesserungsvorschläge :)

      Anbei ein kleines Beispielprojekt von mir + Das PHP Script ;)

      Gruß,
      Paulmaster

      P.s.
      Bei entsprechender Interesse werde ich auch ein User Registrierungs Script Tutorial erstellen..
      Dateien
      • Login.rar

        (68,35 kB, 408 mal heruntergeladen, zuletzt: )

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Paulmaster“ ()

      So jetzt erklär mal, wie du die Datenbank mit der Tablle (samt struktur) anlegst.
      Dann erklär mir, was du mit einem FTP Account meinst (nicht ganz offensichtlich).
      Ansonsten sieht es recht gut aus, schön auskommentiert. Eine breite stütze für die C&P'ler.
      Und was die user angeht würde ich noch 'id' am Anfang anbringen (PRIMARY INDEX AUTO_INCREMENT).
      Ansonsten sieht es recht gut aus, schön auskommentiert.
      Danke, ist mein erster/erstes Thread/Tutorial :D
      So jetzt erklär mal, wie du die Datenbank mit der Tablle (samt struktur) anlegst.
      1. ohost.de -> Dort registrieren
      2. Einloggen
      3. Webhosting Mysql auswählen / anklicken
      4. Falls noch keine Datenbank erstellt / aufgelistet -> Datenbank erstellen
      5. DeineDomain.phpmyadmin.ohost.de in der Adressleiste deines Browsers eingeben
      6. Login mit Mysql Daten
      7. Oben den "Reiter" SQL auswählen
      8. Folgendes eingeben:

      SQL-Abfrage

      1. CREATE TABLE User (
      2. username VARCHAR(50),
      3. passwort VARCHAR(50)
      4. )

      9. Mit OK bestätigen
      Dann erklär mir, was du mit einem FTP Account meinst (nicht ganz offensichtlich).
      1. ohost.de in die Adressleiste eingeben
      2. Registrieren
      Schon hat man einen FTP Account? ?(
      Und was die user angeht würde ich noch 'id' am Anfang anbringen (PRIMARY INDEX AUTO_INCREMENT).
      Jetzt weiß ich wieder was ich vergessen habe :pinch:
      Ich werde es einbauen wen ich Zeit habe..
      Eine breite stütze für die C&P'ler.
      Man liest die Kommentare beim Kopieren & Einfügen automatisch mit, die Informationen werden automatisch von deinem Unterbewusstsein erfasst. Man lernt, ob man will oder nicht ;)

      Gruß,
      Paulmaster

      BeefyX schrieb:

      Das ist oledb und soweit ich weiss ist das für MS SQL!

      DBParameter gibts für ALLE! Inkl. dem MySQL Connector

      Killerjo96 schrieb:

      mysql_real_escape_string();

      Gott schuf mysqli und prepared_statements und siehe, es ward Licht

      Das NACHTRÄGLICHE bereinigen eines SQL Statements bzw die "Reinigung" eines per se unsicheren User-Inputs ist grundsätzlich eher unsauber. Außerdem fehlt mir kein guter Grund ein, warum man DBParameter bzw prepared_statement NICHT verwenden sollte ...