Mysql R31 - Login Funktion geht nicht

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
  • Hallo,
    meine Login funktion funktioniert nicht richtig es liegt an strcmp() ich weiß nicht was falsch ist


    new hash[130];
    WP_Hash(hash, sizeof(hash), inputtext);
    if(strcmp(hash, pInfo[playerid][Password], true))
    {
    SpawnPlayer(playerid);
    }
    else
    {
    print(hash);
    print("______");
    print(pInfo[playerid][Password]);
    SendClientMessage(playerid, COLOR_ERROR, "* Das eingegebene Passwort ist falsch!");
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{28DC28}Login", "{FFFFFF}Der Account ist registriert.\nUm dich anzumelden,\ngib bitte dein Passwort ein", "Einloggen", "Abbrechen");
    }


    Durch die Prints habe ich raus gefunden das hash und pInfo[playerid][Password] genau das gleiche ist 1 zu 1 jedoch führt er trotzdem immer das else aus ...



    mfg tdXkiller

  • strcmp returnt 0 wenn die strings gleich sind also musst du !strcmp schreiben.


    Nur so am Rande, anstatt den Hash aus der DB zu holen solltest du lieber abfragen ob es einen Usernamen mit diesem bestimmten string (hash) gibt. Wenn ja war das eingegebene Passwort richtig.

  • 8| wie meinst du das ? erklär mir das bitte mal bzw was soll mir das bringen


    Hat er doch geschrieben wenn die string gleich sind wird 0 zurück gegeben du fragst ab ob strcmp 1 zurück gibt und das bedeutet in dem fall das die String nicht gleich sind.
    Daher änderst du
    if(strcmp(hash, pInfo[playerid][Password], true))


    zu


    if(strcmp(hash, pInfo[playerid][Password], true)==0)

    oder
    if(!strcmp(hash, pInfo[playerid][Password], true))



    siehe auch
    http://wiki.sa-mp.com/wiki/Strcmp


    Zu dem musst du abprüfen ob die eingabe nicht leer ist das kannst mit


    if(!inputtext[0])
    oder


    if(inputtext[0]==EOS)


    oder
    if(inputtext[0]=='\0')
    machen