Loginsystem mit VB.net, PHP und MySQL

  • PHP

Es gibt 93 Antworten in diesem Thema. Der letzte Beitrag () ist von meikel__.

    Loginsystem mit VB.net, PHP und MySQL

    In diesem Tutorial zeig ich euch, wie man in VB.net mithilfe von PHP und mySQL ein Loginsystem baut. Ich habe vor 2 Tagen erst mit PHP lernen angefangen, also seit mir bitte nicht böse, dass manches eventuell sogar leichter oder anders gemacht werden kann/sollte.

    Es folgt erstmal der Teil der Benutzerregistrierung.

    Es wird benötigt:

    • Paidspace/Freespace mit PHP Unterstützung und mindestens einer mySQL-Datenbank ODER
    • XAMPP für Windows (zum Testen)
    • Ein Texteditor wie z.B. der Editor von Windows oder Notepad++

    Fangen wir an:
    Als erstes benötigen wir eine Datenbank. Die sind meistens schon vorher festgelegt vom Anbieter. Wer die Datenbank eines Free-/Paidhosters nimmt, kann den folgenden Schritt überspringen.

    Schritt 1: Datenbank anlegen (XAMPP)
    Damit unser PHP Skript überhaupt auf mySQL Datenbank zugreifen kann, benötigen wir erstmal eine Datenbank. Dazu rufen wir mit unserem Standardwebbrowser die Seite localhost/phpmyadmin auf und melden uns dort an.
    Dann sollte die Startseite von der mySQL Datenbankverwaltung aufgehen und ungefähr aussehen wie auf dem Screenshot:

    Nun geben wir bei „Neue Datenbank anlegen“ den Namen unserer neuen Datenbank ein (z.B. „loginsystem“) und klicken auf „Anlegen“.

    Schritt 2: Neue Tabelle anlegen(XAMPP und Webspace)
    Wir melden uns bei PHPMYADMIN an und wählen unsere Datenbank aus. Nun können wir eine neue Tabelle anlegen. Diese nennen wir z.B. jetzt „anmeldeinformationen“. Bei Anzahl der Felder geben wir ein, wieviele Spalten erzeugt werden sollen. In diesem Beispiel benötigen wir 3 Spalten (Benutzername, E-Mail Adresse, Passwort). Nun klickt ihr auf OK.
    Jetzt haben wir jeweils 3 Felder in die wir nun die Beschreibung der einzelnen Felder eintragen können. Nun tragen wir die Beschreibung der Felder wie auf dem folgenden Screenshot ein:

    und klicken danach auf „Speichern“. Nun habt ihr eine neue Tabelle mit den 3 Feldern angelegt. Jetzt könnt ihr den Browser beenden denn jetzt kommt der PHP Teil.

    Schritt 3: PHP Skript welches die Benutzerinformationen einträgt (XAMPP und Webspace)
    Kopiert folgendes PHP Skript in ein Textbearbeitungsprogramm eurer Wahl und speichert dies als „register.php“ ab.

    PHP-Quellcode

    1. <?php
    2. // Skript geschrieben am 01.08.2009 von Neo
    3. // Verbindungsinformationen zur Datenbank
    4. $dbhost = "localhost";
    5. $dbname = "loginsystem";
    6. $dbuser = "root";
    7. $dbpass = "mysql-pw";
    8. // Variablen festlegen
    9. $email = $_GET['email'];
    10. $username = $_GET['user'];
    11. $password = $_GET['pw5'];
    12. // Verbindung zur MySQL Datenbank herstellen und Daten überprüfen und eintragen
    13. mysql_connect($dbhost, $dbuser, $dbpass)or die("Could not connect: ".mysql_error());
    14. $verb = mysql_select_db($dbname);
    15. if ($verb)
    16. {
    17. echo("Verbindung zu Datenbank aufgebaut!");
    18. if ($email == "" or $username == "" or $password == "")
    19. {
    20. if ($email == "")
    21. echo("<br>Errorcode: <b>2</b>");
    22. if ($username == "")
    23. echo("<br>Errorcode: <b>3</b>");
    24. if ($password == "")
    25. echo("<br>Errorcode: <b>4</b>");
    26. }
    27. else
    28. {
    29. $abfragen_email = "SELECT email FROM anmeldeinformationen WHERE email='$email'";
    30. $abfragen_user = "SELECT username FROM anmeldeinformationen WHERE username='$username'";
    31. $ergebnis_email = mysql_query($abfragen_email);
    32. $ergebnis_user = mysql_query($abfragen_user);
    33. if (mysql_num_rows($ergebnis_email) > 0 or mysql_num_rows($ergebnis_user) > 0)
    34. {
    35. echo("<br>Errorcode: <b>1</b><br>Username und/oder E-Mail Adresse existiert bereits");
    36. }
    37. else
    38. {
    39. $sql = "INSERT INTO ".
    40. "anmeldeinformationen (username, pw5, email) ".
    41. "VALUES ('".
    42. $username."', '".
    43. $password."', '".
    44. $email."')";
    45. $eintrag = mysql_query($sql);
    46. if ($eintrag)
    47. {echo('<br>FINISHED');}
    48. else
    49. {die("<br>Errorcode: <b>5</b>");}
    50. }
    51. }
    52. }
    53. else
    54. {
    55. die('<br>Errorcode: <b>6</b>');
    56. }
    57. mysql_close();
    58. ?>

    Ihr müsst nur „$dbhost“, „$dbname“, „$dbuser“ und „$dbpass“ entsprechend euren Logindaten der mySQL Datenbank anpassen. Diese erfahrt ihr in der Regel bei eurem Anbieter.

    Schritt 4: Testen und Verwenden des PHP Skripts (XAMPP und Webspace)
    Nun könnt ihr eure Logindaten mithilfe des PHP Skripts wie folgt in eure mySQL Datenbank eintragen. Gebt in einen Webbrowser folgende URL ein:

    localhost/register.php?email=EMAILADRESSE&user=BENUTZERNAME&pw5=PASSWORT

    In VB.net kann man dann drei Textboxen machen und einen Button, der folgendes Ausführt:

    VB.NET-Quellcode

    1. Dim webbrowser1 as New WebBrowser
    2. webbrowser1.Navigate("http://localhost/register.php?email=" & TextBox1.Text & "&user=" & TextBox2.Text & "&pw5=" TextBox3.Text)
    3. Do While webbrowser1.ReadyState <> WebBrowserReadyState.Complete
    4. Application.DoEvents()
    5. Loop
    6. If webbrowser1.DocumentText.Contains("1") Then
    7. MessageBox.Show("Diese E-Mail und/oder der Benutzername existiert bereits in unserer Datenbank!", "E-Mail/Benutzername existiert bereits", MessageBoxButtons.OK, MessageBoxIcon.Error)
    8. ElseIf webbrowser1.DocumentText.Contains("FINISHED") Then
    9. MessageBox.Show("Benutzer erfolgreich registriert, Sie können sich nun Anmelden", "Registrierung erfolgreich", MessageBoxButtons.OK, MessageBoxIcon.Information)
    10. End If

    Um das ganze noch sicherer zu machen, könnt ihr das Passwort als MD5-Hash abspeichern :)
    Dieses Skript gibt euch dann an, ob irgendein Fehler aufgetreten ist, wie z.B. wenn irgendeine Information vergessen wurde, oder ob die E-Mail oder der Benutzername bereits in der Datenbank existiert. Wenn ein Fehler auftritt, könnt ihr in VB.net diese „Errorcodes“ auswerten, und entsprechende Hinweise oder MessageBox(en) anzeigen lassen.

    Erklärung der "Errorcodes":
    • Errorcode 1: Benutzername und/oder E-Mail Adresse sind in der Datenbank bereits vorhanden
    • Errorcode 2: Das Feld "E-Mail" ist leer
    • Errorcode 3: Das Feld "Benutzername" ist leer
    • Errorcode 4: Das Feld "Passwort" ist leer
    • Errorcode 5: Es ist ein Fehler beim Eintragen der Daten in die Datenbank aufgetreten.
    • Errorcode 6: Es konnte keine Verbindung zur Datenbank aufgebaut werden.

    Das war der Teil der Benutzerregistrierung. Wie man nun den Benutzernamen und das Passwort beim Login abfragt, folgt später.
    Bei Fragen bitte eine PN schicken oder diesen Thread posten.

    Das PHP-Skript habe ich komplett alleine geschrieben. Ihr dürft dieses Skript gerne kopieren und in eurem Projekt verwenden. Ob ihr nun meinen Namen (Benutzernamen) angebt bleibt euch überlassen.

    Da der VB-Teil in dem Tutorial nur minimal ist, ist das eher ein Fall für den Off-Topic-Bereich, an statt für den Sourcecodeaustausch. Daher Topic verschoben.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Loginsystem Teil 2

    Es folgt nun der Teil des Loginsystems.

    Was wird benötigt:
    - Paidspace/Freespace mit PHP Unterstützung und mindestens einer mySQL-Datenbank ODER
    - XAMPP für Windows (zum Testen)
    - Ein Texteditor wie z.B. der Editor von Windows oder Notepad++

    Schritt 1: Die Datei „login.php“ erstellen.
    Um eine Verbindung zur Datenbank herstellen zu können, brauchen wir eine php Datei, die überprüft, ob die eingegebenen Benutzerdaten in der Datenbank existieren und ob das Passwort richtig ist.
    Kopiert folgendes Skript in einen Texteditor eurer Wahl und speichert das Dokument als „login.php“ ab.

    PHP-Quellcode

    1. <?php
    2. // Skript erstellt von Neo am 14.01.2010
    3. // Verbindungsinformationen zur Datenbank
    4. $dbhost = "localhost";
    5. $dbname = "Datenbank Name";
    6. $dbuser = "Datenbank Benutzername";
    7. $dbpass = "Datenbank Passwort";
    8. $user = $_GET['username'];
    9. $pass = $_GET['password'];
    10. mysql_connect($dbhost, $dbuser, $dbpass)or die("Could not connect: ".mysql_error());
    11. $verb = mysql_select_db($dbname);
    12. if ($verb)
    13. {
    14. $sql = "SELECT * FROM loginsystem WHERE username='".$user."'";
    15. $quer = mysql_query($sql) or die(mysql_error());
    16. $num = mysql_num_rows($quer);
    17. if ($num == 0)
    18. {
    19. echo("User does not exist");
    20. exit();
    21. }
    22. else
    23. {
    24. $row = mysql_fetch_object($quer);
    25. $passwort = $row->passwort;
    26. if ($passwort == $pass)
    27. {
    28. echo("success");
    29. }
    30. }
    31. }


    Ihr müsst nur „$dbhost“, „$dbname“, „$dbuser“ und „$dbpass“ entsprechend euren Logindaten der mySQL Datenbank anpassen. Diese erfahrt ihr in der Regel bei eurem Anbieter.

    Schritt 2: Testen des Skripts.
    Nun können wir das Skript schon testen, es muss natürlich vorher die Datenbank, wie im ersten Beitrag erklärt, angelegt sein.
    Erstellt einen beliebigen Benutzer mit der „register.php“ und gebt folgendes in die Adressleiste eures Browsers ein:

    Quellcode

    1. http://localhost/login.php?username=DERBENUTZERNAME&password=PASSWORTDESBENUTZERS


    Um das Skript in VB.Net benutzen zu können, benötigt ihr 2 Textboxen und einen Button.
    Der Button könnte folgenden Code ausführen:

    VB.NET-Quellcode

    1. Dim webbrowser1 as New WebBrowser
    2. webbrowser1.Navigate("http://localhost/login.php?username=" & TextBox1.Text & "&password=" & TextBox2.Text)
    3. Do While webbrowser1.ReadyState <> WebBrowserReadyState.Complete
    4. Application.DoEvents()
    5. Loop
    6. If webbrowser1.DocumentText.Contains("success") Then
    7. MessageBox.Show("Sie wurden erfolgreich angemeldet.")
    8. Else
    9. MessageBox.Show("Die von Ihnen eingegebenen Anmeldedaten sind ungültig. Bitte überprüfen Sie Ihre Eingaben!")
    10. End If


    Das war´s auch schon mit dem Loginteil.


    Bei Fragen, schreibt hier im Thread oder schickt mir eine Private Nachricht.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Neo“ ()

    Das wäre in Tips und Tricks besser aufgehoben und es gibt eine bessere alternative zum WebBrowser. Z.b: WebClient oder HTTPWebRequest!
    Ebenso wäre es noch von vorteil, wenn die Daten verschlüsselt würden, damit man nicht Username und so abfangen kann. Wie z.B.: mit meiner HTTPSecurityLibrary nutzt das DiffieHelmann Schlüsselfindungssystem.
    Hallo :)

    Ich werde das natürlich noch weiter ausfeilen und sicherer machen. Das ist jetzt erstmal das, was ich gestern und heute hinbekommen habe. Da ich PHP auch im Moment erst lerne, wollte ich erstmal einfach anfangen :)

    Ich hätte das Tutorial auch lieber im Sourcecode Austausch oder Tipps und Tricks gehabt, aber Marcus hat den Thread in´s OffTopic verschoben. Naja ich werde morgen / übermorgen erstmal den zweiten Teil (den Login selber) schreiben, und dann werde ich alles noch etwas sicherer machen :)

    Danke für eure Antworten :thumbsup:
    Hmm ich komme nicht an den Fehler 5 vorbei...

    ich benutzte bplaced.net und habe kaum erfahrung mit php...

    http://boomer2084.bplaced.net/register.php?email=lol@lol.de&user=test&pw5=test

    PHP-Quellcode

    1. else
    2. {
    3. $sql = "INSERT INTO ".
    4. "anmeldeinformationen (username, pw5, email) ".
    5. "VALUES ('".
    6. $username."', '".
    7. $password."', '".
    8. $email."')";
    9. $eintrag = mysql_query($sql);
    10. if ($eintrag)
    11. {echo('<br>FINISHED');}
    12. else
    13. {die("<br>Errorcode: <b>5</b>");}
    14. }
    15. }

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

    VB Fehler beim Compilen

    Hey vielen danke für das TuT.

    Aber bei mir kommt in VB 2005 immer ein compile Error

    und zwar bei diesem Teil :

    webbrowser1.Navigate("http://localhost/register.php?email=" & TextBox1.Text & "&user=" & TextBox2.Text & "&pw5=" TextBox3.Text )

    Fehler : Komma,")" oder eine gültige Ausdrucksfortsetzung erwartet.

    MFG. David
    :)

    EDIT: Fehler gefunden habe ein "&" Zeichen vergessen.

    nochwas endeckt:
    Bei mir kommt keine MessageBox :(

    EDIT: IST ALLES OK !!!

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

    Loginteil hinzugefügt. Sorry für die Verspätung, ich hatte in der letzten Zeit nicht genug Zeit um den Loginteil zu schreiben.
    Bei Fragen oder Problemen, könnt ihr hier in dem Thread schreiben, mir eine PN schicken oder mich in ICQ adden (ICQ Nummer steht auf meiner Profilseite).
    SQL Injections kannste in PHP ausschließen, das heißt aber nicht das es sicherer ist, da die Daten immernoch im Klartext an das Script gesendet werden.

    Um die Daten zu Escapen:

    PHP-Quellcode

    1. $username = mysql_escape_string($_POST['username']);
    2. $password= md5($_POST['password']); // da ja ein PW meistens als MD5 Hash verglichen wird, damit es nirgends als Klartext steht.
    Man sollte es gleich als MD5 übertragen. Sonst wird das leicht mitgesnifft. dazu sollte man noch eine programmgenereiete Checksumme mitschicken, um zu prüfen, ob die Registrierungs-anfrage auch wirklich vom Programm kommt. Sonst hat man 2000 neue Fakeregistrierungen.
    Von meinem iPhone gesendet
    Bei mir kommt der Fehler :

    Quellcode

    1. Verbindung zu Datenbank aufgebaut!
    2. Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in X:\xampp\htdocs\register.php on line 38
    3. Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in X:\xampp\htdocs\register.php on line 38
    4. Errorcode: 5



    MfG Jopi24
    Hallo erstmal bin neu hier.

    Ich habe leider auch den Fehler und bekomme ihn nicht weg. Bin bei Kilu

    Verbindung zu Datenbank aufgebaut!
    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /data/multiserv/users/385263/projects/691320/www/register.php on line 38

    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /data/multiserv/users/385263/projects/691320/www/register.php on line 38

    Errorcode: 5

    Hoffe jemand kann mir helfen, ist echt dringend.