Passwort wird als falsch ausgelesen

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Tag,


    Ich habe ein Problem mit meinem Registrierungs- und Loginscript:
    Wenn sich der Spieler ein Account erstellt, wird das Passwort in der Datenbank gespeichert (MD5).
    Allerdings wird das Passwort beim Login als Falsch angezeigt.
    Ich weiß nicht, warum das passiert...



    //Registrierung: Passwort wird abgespeichert
    mysql_escape_string(inputtext, passwort, dbhandle);
    format(query, sizeof(query), "INSERT INTO user (username, password) VALUES ('%s', MD5('%s')) ", GetSpielerName(playerid), passwort);
    mysql_function_query(dbhandle, query, false, "", "");


    //Abfrage, ob das Passwort richtig ist
    mysql_escape_string(inputtext, passwort, dbhandle);
    format(query, sizeof(query), "SELECT * FROM user WHERE username='%s' AND password=MD5('%s')", GetSpielerName(playerid), passwort);
    mysql_function_query(dbhandle, query, true, "OnPasswordResponse", "i", playerid);


    public OnPasswordResponse(playerid)
    {
    new num_rows, num_fields;
    cache_get_data(num_rows, num_fields, dbhandle);
    if(num_rows==1)
    {


    //PW richtig


    }
    else
    {
    //Falsch
    }


  • Probiere es mal so



    //Registrierung: Passwort wird abgespeichert
    mysql_escape_string(inputtext, passwort, dbhandle);
    format(query, sizeof(query), "INSERT INTO user (username, password) VALUES ('%e', MD5('%e')) ", GetSpielerName(playerid), passwort);
    mysql_function_query(dbhandle, query, false, "", "");



    //Abfrage, ob das Passwort richtig ist
    mysql_escape_string(inputtext, passwort, dbhandle);
    format(query, sizeof(query), "SELECT * FROM user WHERE username='%e' AND password=MD5('%e')", GetSpielerName(playerid), passwort);
    mysql_function_query(dbhandle, query, true, "OnPasswordResponse", "i", playerid);



    public OnPasswordResponse(playerid)
    {
    new num_rows, num_fields;
    cache_get_data(num_rows, num_fields, dbhandle);
    if(num_rows==1)
    {



    //PW richtig



    }
    else
    {
    //Falsch
    }

  • Wie sieht deine Datenbankstruktur aus, sowie die Daten darin?
    Mit welchem Benutzername meldest du dich an?
    Gibt dir der MySQL Log etwas aus?

    #This


    Nimm anstatt MD5 -> SHA2(CONCAT('IRGENDEINWORT','%s'), 512) so ist es ein wenig sicherer =)

  • Password mache Ich als varchar (25 Zeichen), username ebenso.


    Die MySQL Log zeigt mir keinen Fehler an.

  • Habe jetzt 35 Zeichen bei Password, auch bei Spielername.
    Allerdings erscheint die Fehlermeldung trotzdem.
    Außerdem habe Ich als Kollation "latin1_swedish_ci"