[Tutorial] Login + Registrierung über eine MySql-DB [+ Hilfedateien]

  • Hi Community,


    da ich immer so oft gefragt werde, wie Logins und Registrierungen in Autoit mit anschließender Übertragung der Daten in eine DB, funktioniert, starte ich diesen Thread. Ich werde hier alles genaustens erklären und Hilfedateien mitliefern.


    I.Einrichten der MySql-Datenbank:


    Zu allererst müsst ihr euch bei dem Freehoster Funpic.de registrieren.


    Nach erfolgreichem „Anmelden“ seht ihr das „Control-Center“ eures Servers.


    [Blockierte Grafik: http://www.autoit.de/file:///C:/Users/Johannes/AppData/Local/Temp/msohtmlclip1/02/clip_image001.gif]Klickt nun auf „Webhosting MySql“ rechts oben:
    [Blockierte Grafik: http://bbs07.spacequadrat.de/Tutorial/LoginMySql/funpic_1_1.JPG
    Klickt nun auf den Button „Aktivieren“:
    [Blockierte Grafik: http://bbs07.spacequadrat.de/Tutorial/LoginMySql/funpic_1_2.JPG]


    Überlegt euch nun ein Passwort (merken für später!) und bestätigt auf „Weiter“:
    [Blockierte Grafik: http://bbs07.spacequadrat.de/Tutorial/LoginMySql/funpic_1_3.JPG
    Nun bekommt ihr die Meldung, dass der MySql-Account aktiviert wurde. Kehren wir nun zurück zur „MySql-Übersicht“:
    [Blockierte Grafik: http://bbs07.spacequadrat.de/Tutorial/LoginMySql/funpic_1_4.JPG]


    Bei erfolgreichem Ausführen ist der MySql-Status nun auf – Aktiviert. Sehen wir uns nun die MySql-Daten einmal an. Dazu klicken wir auf „MySql-Daten“:
    [Blockierte Grafik: http://bbs07.spacequadrat.de/Tutorial/LoginMySql/funpic_1_5.JPG
    Hier seht ihr nun alle wichtigen Daten, die wir später für den Login in der MySql-DB, brauchen. Gehen wir nun in die Datenbankverwaltung – phpMyAdmin über „Jetzt aufrufen!“:
    [Blockierte Grafik: http://bbs07.spacequadrat.de/Tutorial/LoginMySql/funpic_1_6.JPG
    Nun ist eine Authentifizierung erforderlich. Dazu gebt ihr den Benutzernamen und das Passwort ein (Die Daten aus dem Bild vorher - nicht zum Einloggen in Funpic).
    [Blockierte Grafik: http://bbs07.spacequadrat.de/Tutorial/LoginMySql/funpic_1_7.JPG]


    [Blockierte Grafik: http://www.autoit.de/file:///C:/Users/Johannes/AppData/Local/Temp/msohtmlclip1/09/clip_image001.gif]Nach erfolgreichem Einloggen seht ihr nun die Oberfläche von phpMyAdmin. Von hier kann man die Datenbanken verwalten. Da wir nur eine Tabelle anlegen wollen, die Benutzernamen und Passwörter speichert, gehen wir zuerst einmal auf das kleine Quadrat, auf dem „SQL“ steht:
    [Blockierte Grafik: http://bbs07.spacequadrat.de/Tutorial/LoginMySql/funpic_1_8.JPG
    Es öffnet sich ein Fenster in dem SQL-Befehle eingegeben werden können.
    [Blockierte Grafik: http://bbs07.spacequadrat.de/Tutorial/LoginMySql/funpic_1_9.JPG]

    11 Mal editiert, zuletzt von Jautois ()

  • Der Code zum Erstellen einer Tabelle mit einer Spalte Benutzername und einer Passwort lautet wie folgt:


    CREATE TABLE `User_Daten` (
    `Benutzername` varchar(50) NOT NULL default '',
    `Passwort` varchar(200) NOT NULL default '')
    TYPE=MyISAM;



    Eine kurze Erklärung zum Sql-Code:


    CREATE TABLE `User_Daten` (
    … erstelle die Tabelle „User_Daten“


    `Benutzername` varchar(50) NOT NULL default '',
    … mit der Spalte „Benutzername“ vom Typ“ Varchar(50)“, also einer Zeichenkette die maximal 50 Zeichen haben kann


    `Passwort` varchar(200) NOT NULL default '')
    … mit der Spalte „Passwort“ vom Typ“ Varchar(200)“, also einer Zeichenkette die maximal 200 Zeichen haben kann


    Alle Datentypen kann man sich hier anschauen: http://www.schmager.de/mysql.php


    Geben wir nun den Code dort ein und klicken auf „OK“:
    [Blockierte Grafik: http://bbs07.spacequadrat.de/Tutorial/LoginMySql/funpic_1_10.JPG]
    Sofern der SQL-Befehl erfolgreich ausgeführt werden konnte, erscheint dieser Hinweis.

    [Blockierte Grafik: http://bbs07.spacequadrat.de/Tutorial/LoginMySql/funpic_1_11.JPG
    Klicken wir nun in der linken Navigation auf unsere neu angelegte Tabelle "User_Daten". Direkt bekommt ihr die Struktur der Tabelle gezeigt und könnt sehen welche Spalten in der Tabelle vorhanden sind.

    Zudem sind die Eigenschaften der einzelnen Spalten zusehen.


    (Hier könnt ihr auch nachträglich noch etwas verändern. Wenn ihr z.B. den Benutzernamen auf 25 Zeichen beschränken wollt, ändert ihr den Typ – Varchar(50), der Spalte Benutzername, auf Varchar(25).
    Klickt dazu auf den Stift neben dem roten Kreuz in der jeweiligen Spalte, um etwas verändern zu können.)

    [Blockierte Grafik: http://bbs07.spacequadrat.de/Tutorial/LoginMySql/funpic_1_12.JPG

  • Als nächstes wollen wir einen Probedatensatz einfügen, um später auch unser Autoit-Script testen zu können. Klickt dazu auf „Einfügen“ in der horizontalen Navigation. Nun könnt ihr zwei Testdatensätze einfügen. Beachtet aber das Passwort als MD5 zu speichern. Die Passwörter sind somit verschlüsselt gespeichert.Einen MD5-Creator gibt es hier: www.md5-creator.com
    Beispiel:
    Benutzername: Test

    Passwort: 0cbc6611f5540bd0809a388dc95a615b (der String „Test“ als MD5)

    Bestätigt eure Eingaben mit “OK”.

    Wenn die Datensätze erfolgreich eingetragen wurden, bekommt ihr eine entsprechende Meldung, links oben.
    [Blockierte Grafik: http://bbs07.spacequadrat.de/Tutorial/LoginMySql/funpic_1_14.JPG]
    Klickt nun in der horizontalen Navigation auf „Anzeigen“ um die gerade eben eingetragenen Datensätze zu sehen.
    (Wollt ihr noch einmal etwas dort verändern: Blauer Pfeil – Löschen | Grüner Pfeil - Editieren/Verändern)
     [Blockierte Grafik: http://bbs07.spacequadrat.de/Tutorial/LoginMySql/funpic_1_15.JPG]

  • II. PHP-Datei erstellen:


    WICHTIG: Alle php-Dateien die hier stellt werden, müssen im gleichen Ordner auf deinem Webspace liegen!


    Zuerst legen wir uns einer php-Datei an, in der wir alle Mysql-Datenbankverbindungsdaten speichern.
    Der vorgefertigte PHP-Code mit Erklärung: (reiner Code )


    Diesen Code speichert ihr als db_config.php Datei ab und legt ihn in einen Ordner auf eurem Webspace. Seit sicher, dass alle eingetragenen Daten richtig sind, da sonst keine Verbindung hergestellt werden kann.



    Um später im Autoit-Script die Daten auf ihre Richtigkeit zu prüfen, brauchen wir diese PHP-Datei. Sie hat nur die Aufgabe, den Benutzernamen und das Passwort aus der DB, mit den eingegebenen Daten aus dem Autoit-Script, zu vergleichen.


    Der vorgefertigte PHP-Code mit Erklärung: (reiner Code )


    Diesen Code speichert ihr als login.php Datei ab und legt ihn in einen Ordner auf eurem Webspace. Merkt euch den Pfad (<URL>) zur Datei, da wir diesen später benötigen.

  • III. Autoit-Datei erstellen:


    Kommen wir nun zum Erstellen der Autoit-Datei.



    #include <INet.au3>


    _Login("Hallo","Hallo")
    ; Ein Loginbeispiel zum Testen:
    ; Benutername: Test
    ; Passwort: Hallo


    Func _Login($sBenutzername = "", $sPasswort = "")
    $iRValue = _INetGetSource("<URL>/login.php?benutzername=" & $sBenutzername & "&passwort=" & $sPasswort)
    ; Statt <URL> tragt ihr hier bitte die URL zur login.php-Datei auf dem Webspace ein
    ; Öffnet die Seite und führt dabei die login.php-Datei aus. Die php-Datei arbeitet nun ihren Code ab und gibt entweder ...
    ; 0 - Benutzername stimmt nicht (nicht vorhanden) oder ...
    ; 1 - Passwort und Benutzername stimmt oder ...
    ; 2 - Passwort stimmt nicht
    ; ... aus

    Switch $iRValue ; je nach Rückgabewert der login.php-Datei wird nun weiter verfahren:
    Case 0 ; - Benutzername stimmt nicht (nicht vorhanden)
    MsgBox(16,"Error","Benutzername ist nicht registriert!")
    Case 1 ; - Passwort und Benutzername stimmt
    MsgBox(32,"Info","Erfolgreich eingeloggt!")
    Case 2 ; - Passwort stimmt nicht
    MsgBox(16,"Error","Passwort ist falsch!")
    EndSwitch
    EndFunc ;==>_Login


    Wenn ihr die Rückgabewerte der login.php-Datei außerhalb der _Login-Funktion prüfen wollt, müsst ihr mit der "Return"-Funktion arbeiten.


    #include <INet.au3>


    Switch _Login("Test", "Test") ; je nach Rückgabewert der _Login-Funktion wird nun weiter verfahren:
    Case 0 ; - Benutzername stimmt nicht (nicht vorhanden)
    MsgBox(16, "Error", "Benutzername ist nicht registriert!")
    Case 1 ; - Passwort und Benutzername stimmt
    MsgBox(32, "Info", "Erfolgreich eingeloggt!")

    ; < hier könnte Code hinein, was nach einem erfolgreichen Login passieren soll >
    Case 2 ; - Passwort stimmt nicht
    MsgBox(16, "Error", "Passwort ist falsch!")
    EndSwitch


    Func _Login($sBenutzername = "", $sPasswort = "")
    $iRValue = _INetGetSource("<URL>/login.php?benutzername=" & $sBenutzername & "&passwort=" & $sPasswort)
    ; Statt <URL> tragt ihr hier bitte die URL zur login.php-Datei auf dem Webspace ein
    ; Öffnet die Seite und führt dabei die login.php-Datei aus. Die php-Datei arbeitet nun ihren Code ab und gibt entweder ...
    ; 0 - Benutzername stimmt nicht (nicht vorhanden) oder ...
    ; 1 - Passwort und Benutzername stimmt oder ...
    ; 2 - Passwort stimmt nicht
    ; ... aus


    Switch $iRValue ; je nach Rückgabewert der login.php-Datei wird nun weiter verfahren:
    Case 0 ; - Benutzername stimmt nicht (nicht vorhanden)
    Return 0
    Case 1 ; - Passwort und Benutzername stimmt
    Return 1
    Case 2 ; - Passwort stimmt nicht
    Return 2
    EndSwitch
    EndFunc ;==>_Login



    Solltet ihr bis hierhin alle Schritte fehlerfrei durchgeführt haben, sollte beim Ausführen des jeweiligen Scriptes, die Messagebox "Erfolgreich eingeloggt!" ausgeben.

  • IV. Php-Datei erstellen (Registrierung):


    Schreiben wir nun noch eine Php-Datei für die Registrierung. Mit dieser werden später der MySql-DB die Daten( Benutzername und Passwort) übermittelt, also ein Eintrag in der DB getätigt.


    Der vorgefertigte PHP-Code mit Erklärung: (reiner Code )



    Diesen Code speichert ihr als registrierung.php Datei ab und legt ihn in einen Ordner auf eurem Webspace. Merkt euch den Pfad (<URL>) zur Datei, da wir diesen später benötigen.

  • V. Autoit-Datei erstellen (Registrierung):


    Erstellen wir nun die Autoit-Datei damit sich Benutzer mit einem Namen+Passwort registrieren können.

    #include <INet.au3>


    _Registration("Hallo", "Hallo2")
    ; Ein Registrationsbeispiel zum Testen:
    ; Benutername: Hallo
    ; Passwort: Hallo


    Func _Registration($sBenutzername = "", $sPasswort = "")
    $iRValue = _INetGetSource("<URL>/registrierung.php?benutzername=" & $sBenutzername & "&passwort=" & $sPasswort)
    ; Statt <URL> tragt ihr hier bitte die URL zur registrierung.php-Datei auf dem Webspace ein
    ; Öffnet die Seite und führt dabei die registrierung.php-Datei aus. Die php-Datei arbeitet nun ihren Code ab und gibt entweder ...
    ; 0 - nicht erfolgreich registriert (Daten konnten nicht in die DB eingefügt werden) ...
    ; 1 - erfolgreich registriert ...
    ; 2 - der Benutzername existiert bereits in der Datenbank ...
    ; 3 - Benutzername oder Passwort stimmt nicht
    ; ... aus


    Switch $iRValue ; je nach Rückgabewert der login.php-Datei wird nun weiter verfahren:
    Case 0 ; - nicht erfolgreich registriert (Daten konnten nicht in die DB eingefügt werden) ...
    MsgBox(16, "Error", "Registration fehlgeschlagen!")
    Case 1 ; - erfolgreich registriert ...
    MsgBox(32, "Info", "Erfolgreich registriert!")
    Case 2 ; - der Benutzername existiert bereits in der Datenbank ...
    MsgBox(16, "Error", "Der Benutzername ist bereits registriert!")
    Case 3 ; - Benutzername oder Passwort stimmt nicht
    MsgBox(16, "Error", "Benutzername/Passwort ist falsch!")
    EndSwitch
    EndFunc ;==>_Registration



    VI. Komplette Autoit-Datei für einen Login + Registrierung


    Abschließend hier noch ein komplettes Script für einen Login und eine Registrierung.





    Ich hoffe Euch gefällt/hilft das Tutorial! Ihr dürft mir gerne Euer Feedback dalassen
    :thumbsup:
    Nun könnt Ihr auch gerne bei Problemen Fragen stellen.

  • Also ich habe das ganze zwei mal durchgespielt.


    Beim ersten mal war es meine Schuld, das es nicht so wollte wie es sollte.


    Aber Dank Jautois, waren die Probleme schnell gelöst (meine Fehler berichtigt) und ich bin von dem Tutorial echt begeistert.



    Ich kann nur sagen das Jautois zu seinem Wort steht.
    Ich hoffe Euch gefällt/hilft das Tutorial! :thumbsup: Sehr schön !!!
    Ihr dürft mir gerne Euer Feedback da lassen. :thumbup: Habe ich hiermit !
    Nun könnt Ihr auch gerne bei Problemen Fragen stellen. :thumbsup: - Antworten bekommen !

    ...... Lieben Gruß, ........
    ...........
    Alina ............

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Ich habe die Deutsche Hilfe auf meinem PC und
    OrganizeIncludes ist beim Scripten mein bester
    Freund. Okay?

  • Hallo noch einmal.


    @Jautois: Hoffe das es okay geht das ich hier dieses hier poste. Sonst PN und ich lösche es wieder. ;-)


    Also es gibt ja das Script mit "Login-Button" und "Registrierung-Button", aber keines mit nur einem "Login-Button".


    Also schnell mal etwas verändert und ein Script mit nur dem "Login-Button" erstellt. User sollen sich evtl. einloggen, aber die Registrieung darf z. B. nur der Admin.


    Ist auch nur so eine Idee gewesen.


    Hier das Bild und danach das Script, das ihr an der Stelle der <URL> noch anpassen müßt.
    autoit.de/wcf/attachment/5992/




    "deRegistrierung" & Script-Datei
    Und nun noch die "deregistrierung.php" und die dazu gehörende AU3.


    PHP-Datei speichern unter deregistrierung.php und online in den gleichen Ordner wie die registrierung.php kopieren.


    Au3-Datei:


    Es funktioniert mit der PHP Datei, aber diese kann bestimmt noch verbessert werden, aber ich habe heute das erste mal mich an PHP heran geschlichen ;-)

    ...... Lieben Gruß, ........
    ...........
    Alina ............

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Ich habe die Deutsche Hilfe auf meinem PC und
    OrganizeIncludes ist beim Scripten mein bester
    Freund. Okay?

    Einmal editiert, zuletzt von Alina ()

  • Alina:
    Bei deiner DeRegistrierung.php ist ein Fehler.
    Nehmen wir mal an ich heise im Programm "Dominik" und du "Alina" So wenn ich meinen Account Löschen will, Könnte ich auch einfach "Username = Alina" Eingeben und weg wärste.
    Trotzdem Dafür das du noch nie php gemacht hast, ist das schon ein guter Anfang! ;-)


    PS : Dashier meine ich $hInput_Passwort = GUICtrlCreateInput("ist egal", 102, 36, 157, 21)


    Jautois schaue doch mal über @lina's Skript drüber, ob man das noch sicherer machern kann.


    Das war es jetzt erstmal von meiner Seite.

  • Ja, sicherer ist:



    <?php


    $host = "localhost";
    $user = "<>";
    $pass = "<>";
    $dbase = "<>";


    mysql_connect($host, $user, $pass);
    mysql_select_db($dbase);


    $Benutzername = mysql_real_escape_string($HTTP_GET_VARS['benutzername']);
    $Passwort = md5(mysql_real_escape_string($HTTP_GET_VARS['passwort']));


    echo $Benutzername . "<br>";
    echo $Passwort . "<br>";


    if ($Benutzername != "" || $Passwort != "")
    {
    $result_delete = mysql_query("DELETE FROM `User_Daten` WHERE CONVERT(`Benutzername` USING utf8) = '$Benutzername' AND CONVERT(`Passwort` USING utf8) = '$Passwort' LIMIT 1;");
    if ($result_delete)
    {
    echo 1;
    exit;
    }
    else
    {
    echo 0;
    exit;
    }
    }
    else
    {
    echo 2;
    exit;
    }
    ?>

  • Hallo,


    ich kenne kein System bei dem sich der Benutzer selbst wieder löschen kann/darf. Sowas ist normalerweise die Aufgabe des Administrators und der kennt das Passwort in der Regel nicht. Benutzername und eine Sicherheitsabfrage sollten also reichen!

  • Soweit ich weiß geht

    PHP
    $HTTP_GET_VARS

    nicht bei PHP5 ?!


    Zumindestens geht es bei mir nicht. Abhilfe schafft

    PHP
    $Variable = $_GET["benutzername"]


    MfG
    Flo

  • Wirklich ein tolles Tut. :)


    Wird mir sicher mal was nützen. :D

    Zitat

    [Heute, 11:39] Raupi: Soll ich es dir machen?
    [Heute, 11:47] BugFix: "Soll ich es dir machen? " - also Raupi !! bitte nicht so öffentlich :rofl:


    Zitat

    [Heute, 11:51] BugFix: und ich werde es mir jetzt machen - das Mittagessen :P


    AMsg UDF v1.00.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
    OwnStyle UDF Version 1.10.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%

  • Hallo,
    Versuche grade selber so etwas auszutesten aber es scheitert schon am ersten Test.
    Das Script stürzt ab. Ich habe die MD5 wie du hier sagst in die db eingetragen und per _MD5 den String "Test" in MD5 umgewandelt.
    Dass hat nicht geklappt, danach habe ich versucht das ohne _MD5 zu machen und direkt die MD5 einzutragen. Leider funktionierte es auch nicht.
    Danach versucht ich es mit anderen Namen/Passwörtern und leider kein Erfolg.
    Ich hatte mal den Pfad aufgerufen der bei der Loginfunktion aufgerufen wird und da kam das bei raus:

    Code
    Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /usr/export/www/vhosts/funnetwork/hosting/*******/login.php on line 15
    0


    Leider verstehe ich kein bisschen von php/MySQL darum bitte ich um Hilfe.

  • so, ich hab alles genau so gemacht, nur kommt bei mir nicht
    *benutzername ist registrierst sondern benutzername nicht gefunden. Ich habe alles genau so editiert wies war.
    Unter funpic konnte ich keinen webspace finden also hab ich in der autoit datei einen link zu meinem anderen webspace angegeben, in der sich die login.php befindet! kann mir jmd helfen?^^

  • Dazu kann ich so jetzt nicht direkt was sagen. Ich müsste mir die Dateien mal anschaun. Vielleicht schickst du mir mal deine ICQ-Nummer per PM, dann könnte ich dir besser helfen.


    Vielleicht ist einfach noch ein Fehler in der PHP, sodass die Benutzer nicht gefunden werden können...