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

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


    #include


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


    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


    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



    [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..

  • 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.



    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 :



    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:

    #include <Inet.au3>


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


    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


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


  • 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?