Login-System verbugt//Bitte um Hilfe

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
  • Schau, so kann das auch nicht funktionieren, ich bin zwar nicht in der Dini Szene gut aber in Sachen Mysql und das stimmt hier sicher nicht...

    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,BLAU,"Das Passwort war nicht lang genug.");


    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Dein Account wurde gefunden. Gib bitte das Passwort ein.","Login","Abbrechen");
    return 1;
    }
    else
    {
    Login(playerid,inputtext);
    return 1;
    }
    }


    Hier fragst du ab ob er was eingegeben hat wenn nicht kommt ein Fehler, jedoch wenn er was eingibt (else) loggst du ihn ein bzw. registrierst ihn auch.
    Du solltest da noch eine Abfrage einbauen ob es mit dem Passwort überein stimmt.

    MFG

  • Hallo,


    dafür kannst du die Funktion strcmp verwenden. Damit vergleicht man zwei Strings miteinander.
    => Funktion


    Nightstream, deine Methode vergleicht nur 2 Integers miteinander. Passwörter bestehen im Normalfall nicht nur aus Intergern.

    Einmal editiert, zuletzt von linux_ ()

  • Hallo,


    ich habe den Link erneuert. Habe den falschen Link eingefügt. Bitte auf jedenfall mal durchlesen. Vergleichen zweier Strings ist nicht gerade schwierig.

    if (!strcmp("eingegebenespw", "pwvonderdini", true))
    {
    // passwörter korrekt
    }
    else
    {
    // passwörter inkorrekt
    }

  • stock Login(playerid,key[])
    {


    new name[MAX_PLAYER_NAME];
    new Spielerdatei[64];


    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);


    if(gettime()<dini_Int(Spielerdatei,"timeban"))
    {
    SendClientMessage(playerid,ROT,"Du bist noch gebannt. Komm später wieder.");
    Kick(playerid);
    return 1;
    }


    if(!strcmp(key, dini_Get(Spielerdatei,"Passwort"), true))
    {
    LoadAccount(playerid);
    SendClientMessage(playerid,BLAU,"Erfolgreich eingeloggt.");
    }
    else
    {
    SendClientMessage(playerid,ROT,"Falsches Passwort.");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Dein Account wurde gefunden. Gib bitte das Passwort ein.","Login","Abbrechen");
    }
    return 1;
    }


    Bei if(strcmp fehlte das !.


    also if(!strcmp(...

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen

  • Hallo,


    wenn Passwort nichts zürck gibt, und der String leer ist, dann bekommt man bei meiner Abfrage immer ein "Der String ist gleich" zurück.


    Sollte der String allerdings leer sein, so müsste ja was mit dini nicht stimmen und nicht mit der Scriptweise von Jan_.
    Und Errors gibt es ja anscheinend auch nicht..

  • if(!strlen(inputtext))
    {
    SendClientMessage(playerid,BLAU,"Das Passwort war nicht lang genug.");
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Gib bitte das gewünschte Passwort ein:","Register","Abbrechen");
    return 1;
    }
    else
    {
    Register(playerid,inputtext);
    return 1;
    }
    }


    Überall das return 1; raus...
    beim Login & Register Dialogs überall das reutnr 1; entfernen.
    Also so,


    if(dialogid==DIALOG_LOGIN)
    {
    if(response==0)
    {
    SendClientMessage(playerid,BLAU,"Du hast den Vorgang abgebrochen.");
    Kick(playerid);
    }
    if(response==1)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,BLAU,"Das Passwort war nicht lang genug.");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Dein Account wurde gefunden. Gib bitte das Passwort ein.","Login","Abbrechen");
    }
    else
    {
    Login(playerid,inputtext);
    }
    }
    }
    if(dialogid==DIALOG_REGISTER)
    {
    if(response==0)
    {
    SendClientMessage(playerid,BLAU,"Du hast den Vorgang abgebrochen.");
    Kick(playerid);
    }
    if(response==1)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,BLAU,"Das Passwort war nicht lang genug.");
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Gib bitte das gewünschte Passwort ein:","Register","Abbrechen");
    }
    else
    {
    Register(playerid,inputtext);
    }
    }
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen