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

  • Wunderbar... manchmal kann es doch so einfach sein wenn man die Lösung sieht. Danke! Funktioniert tadellos ;)

    Mein AutoIT Smartphone GUI >>hier<<

    Der Mensch ist das einzige Tier, dass arbeiten muss.

  • Und leider muss er nochma gepusht werden <_<
    Und zwar bekomme ich leider immernoch. Selbst nach mehrfachen Testen den Fehler zurück das der Benutzer nicht Existiert.
    dabei bin ich mir zu 100% sicher das er existiert.
    Könnte mir da bitte jemand helfen? Gerne auch über TeamViewer.
    Webspace Anbieter: EasyCore bzw. Fanatic Server

    Code:

    [autoit][/autoit][autoit][/autoit][autoit]

    #include

    [/autoit][autoit][/autoit][autoit]

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

    [/autoit][autoit][/autoit][autoit]

    Func _Login($sBenutzername = "", $sPasswort = "")
    $iRValue = _INetGetSource("http://easycore.de/files/MySql/login.php?benutzername=" & $sBenutzername & "&passwort=" & $sPasswort)
    ; Statt 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

    [/autoit][autoit][/autoit][autoit]

    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

    [/autoit]


    [PHP]

    $host = "localhost";
    // Nicht verändern - bleibt bei Funpic und den meisten anderen Hostern gleich

    $user = "web681";
    // Verändern! - Hier müsst ihr den Username eingeben der bei Funpic unter "MySql-Daten" steht

    $pass = "---";
    // Verändern! - Hier müsst ihr das Passwort eingeben das bei Funpic unter "MySql-Daten" steht

    $dbase = "usr_web681_1";
    // Verändern! - Hier müsst ihr den Namen der Datenbank eingeben der bei Funpic unter "MySql-Daten" steht
    ?>
    [/PHP]

    [PHP]

    // PHP-Code Beginn

    require_once('db_config.php');
    // Die Datenbankverbindungsdaten einbinden, damit die Funktion "mysql_connect" funktioniert


    mysql_connect($host, $user, $pass);
    // Öffnet eine Verbindung zu dem MySql-Server

    mysql_select_db($dbase);
    // Wählt die Datenbank $dbase aus

    $Benutzername = mysql_real_escape_string($HTTP_GET_VARS['benutzername']);
    // In der Variable steht der String der in der Url nach "benutzername=" übermittelt wurde

    $Passwort = mysql_real_escape_string($HTTP_GET_VARS['passwort']);
    // In der Variable steht der String der in der Url nach "passwort=" übermittelt wurde


    $result = mysql_query("SELECT * FROM User_Daten WHERE Benutzername='" . $Benutzername . "'");
    // Sendet die Anfrage an die MySql-DB: "Wähle alle Daten aus der Tabelle User_Daten wo der Benutzername gleich $Benutzername ist"
    // !!! Achtung !!! - Habt ihr vorher den Namen der Tabelle verändert müsst ihr logischerweise auch den neuen Namen verwenden

    $row = mysql_fetch_row($result);
    // mysql_fetch_row($result) gibt ein Array zurück mit allen Daten aus der Spalte in der der Benutzername gleich $Benutzername ist

    if ($row)
    // Wenn ein Datensatz gefunden wurde
    {
    // ... Benutzername ist also schonmal vorhanden in der DB

    $Dbmd5Passwort = $row[1];
    // Die Variable $Dbmd5Passwort enthält nun das Passwort als MD5-String
    // mysql_fetch_row in Zeile 34 hatte ein Array zurück gegeben, deshalb $row[1]
    // In der DB ist die Passwortspalte die zweite Spalte von oben - somit $row[1] ( die Spalten sind von 0 ab nummeriert)

    if (md5($Passwort) == $Dbmd5Passwort)
    // Wenn das übermittelte Passwort in MD5 mit dem Passwort aus der DB übereinstimmt
    {
    // Passwort stimmt

    echo 1;
    // Gib eine 1 aus
    }
    else
    // Ansonsten
    {
    // Passwort stimmt nicht

    echo 2;
    // Gib eine 2 aus
    }
    }
    else
    // Ansonsten
    {
    // Benutzername nicht vorhanden

    echo 0;
    // Gib eine 0 aus
    }

    // PHP-Code Ende
    ?>
    [/PHP]

    benutzername: Test
    Passwort: Test

    Danke für die hilfe..

  • habe mir das Script mal angesehen, aber bei mir wird kein Benutzername geschrieben.

    Das PW wird in Md5 geschrieben aber das wars auch schon, weiss einer wo da der Fehler liegt.

  • Hey,

    ich habe das gleiche Problem wie Benman. Bei mir wird auch angezeigt, dass der Benutzername nicht existiert. Hat sich vielleicht etwas geändert, was im Tutorial noch nicht beachtet wurde.

    Php-Dateien wurden wie beschrieben geändert und der Benutzer ist auch in der Datenbank vorhanden. Ich wäre über eure Hilfe sehr dankbar.

    Spoiler anzeigen

    [Blockierte Grafik: http://img4.fotos-hochladen.net/uploads/datenbank4i9nzmtyaf.png]

    [autoit]

    #include <INet.au3>

    [/autoit] [autoit][/autoit] [autoit]

    _Login("Hallo","Hallo")
    ; Ein Loginbeispiel zum Testen:
    $Benutername = "test"
    $Passwort = "test"

    [/autoit] [autoit][/autoit] [autoit]

    Func _Login($sBenutzername = "", $sPasswort = "")
    $iRValue = _INetGetSource("ftp://holybotting.ho.funpic.de/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
    MsgBox(0, "Test", $iRValue)
    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

    [/autoit]

    Ich lasse mir _INetGetSource auch in einer MsgBox ausgeben. Diese ist leider komplett leer. Ist das richtig?

  • Zu Maui:

    Dein Fehler liegt einfach nur darin, dass du die falsche Internetadresse zur PHP-Datei angibst. Du darfst logischerweise nicht den "ftp"-Pfad angeben, da dort Rechte benötigt werden. Stattdessen musst du "http" verwenden und alles klappt.

    Ist also ein Fehler eurerseits. Ich hoffe ich konnte helfen ...

  • Danke schonmal für die schnelle Hilfe Codefixer.

    Leider funktioniert es immer noch nicht so ganz :(

    Also meine Msg-Box gibt mir folgendes aus :

    Spoiler anzeigen

    0<script type="text/javascript">

    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-16106315-4']);
    _gaq.push(['_setDomainName', '.funpic.de']);
    _gaq.push(['_trackPageview']);

    (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript';
    ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
    'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(ga, s);
    })();

    </script>>

    Ich habe auch schon versucht den Link manuell in den Browser einzugeben. Da bekomme ich aber jedesmal eine 0 zurück, also Benutzer ist nicht registriert. Hast du zufällig noch einen anderen Fehler gesehen / wüsstest was ich ändern muss?

  • Der Text aus der MsgBox lässt sich leicht zurückverfolgen. Gehst du auf die Seite der login.php und schaust dir den Quelltext an, so siehst du:


    Funpic scheint wohl neuerdings einen Javacode mit auszugeben, der laut dem Quellcode, eine Statistik füttert (".google-analytics.com").


    Wenn du den Link manuell eingibst und den Benutzer und das Passwort anhängst was wird dann ausgegeben?
    Also

    Code
    http://holybotting.ho.funpic.de/login.php?benutzername=test&passwort=???
  • Die Idee hatte ich auch schon XD. Leider wird mir auch hier die 0 zurückgegeben --> Nutzer existiert nicht. Habe jetzt aber schon mehrmals in der DB nachgeschaut und den Nutzer gelöscht / neu angelegt.

  • Mein Problem ist ich bekomme die Werte nicht wenn ich die Seite über das AutoIt-Script aufrufe.

    Meine login.php:

    Hab ich so geändert dass das Passwort nicht mehr verschlüsselt ist...

    Mein AutoIt-Script:

    [autoit]

    #include <Inet.au3>

    [/autoit][autoit][/autoit][autoit]

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

    [/autoit][autoit][/autoit][autoit]

    Func _Login($sBenutzername = "", $sPasswort = "")
    ;$iRValue = _INetGetSource("http://123.bplaced.net/DB/login.php?benutzername=" & $sBenutzername & "&passwort=" & $sPasswort)
    $iRValue = _INetGetSource("http://123.bplaced.net/DB/login.php?benutzername=Test&passwort=testtest")
    MsgBox(1,"",$iRValue)
    ; 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

    [/autoit][autoit][/autoit][autoit]

    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

    [/autoit]

    Wenn ich den Link im Browser aufrufe passt alles, dann bekomme ich einen Rückgabewert. Aber wenn ich es über das AutoIt-Script probiere bekomme ich keinen Rückgabewert...

    Kann mir jemand helfen?

    Edit: Problem gelöst dank Seubo
    HttpSetUserAgent()

    3 Mal editiert, zuletzt von Sublig (4. Oktober 2011 um 21:12)

  • Hi.
    Mein problem ist die 1 bzw. 0 bei der login.php.
    Egal was ich manuell eingebe es kommt immer eine null...

    login.php

    Ich habe einen rootserver und glaube das dort nichts gesperrt ist. Das registrieren funktioniert auch, aber das programm generiert nur den user "" und das pw ""...

    Bitte um hilfe ;(

  • HI ich weiss das tut ist schon einbisschen älter, aber wie und wo muss ich die Autoit dateien speichern?