Login Bug

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
  • Tach'chen :)


    Ich suche Hilfe bei meinem Login-sys... Bis eben konnte man sich versehentlich noch mit egal welchem Passwort einloggen.
    Jetzt geht es gar nicht mehr und der Dialog kommt unendlich oft 8|
    Hoffe, ihr könnt mal wieder helfen - vielen Dank im Vorraus!


    #define logindialog 103

    if(dini_Exists(Spielerdatei))
    {
    ShowPlayerDialog(playerid,logindialog,DIALOG_STYLE_INPUT,"Login","Gib dein Passwort ein!","Login","");



    if(dialogid==logindialog)
    {
    if(response==1)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,0xFF0037FF,"Du hast nichts eingegeben!");
    ShowPlayerDialog(playerid,logindialog,DIALOG_STYLE_INPUT,"Login","Gib dein Passwort ein!","Login","");
    return 1;
    }
    else
    {
    Login(playerid,inputtext);
    return 1;
    }
    }
    if(response==0)
    {
    Kick(playerid);
    }
    }


    stock Login(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    //if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),true))
    if(strcmp(key,dini_Get(Spielerdatei,"Passwort"), true)==0)
    {
    LoadAccount(playerid);
    SetPlayerPos(playerid,1755.5660,-1929.4365,13.5767);
    SetPlayerFacingAngle(playerid,270);
    }
    if(strcmp(key,dini_Get(Spielerdatei,"Passwort"), false)==0)
    {
    SendClientMessage(playerid,0xF50000FF,"Falsches Passwort");
    ShowPlayerDialog(playerid,logindialog,DIALOG_STYLE_INPUT,"Login","Gib dein Passwort ein!","Login","Tschüss");
    }
    }

  • Deine Abfrage passt nicht. True und false sagen in strcmp nur aus, ob die Groß bzw Kleinschreibung beachtet werden.


    Versuche es so:
    stock Login(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    if(!strcmp(key,dini_Get(Spielerdatei,"Passwort")))
    {
    LoadAccount(playerid);
    SetPlayerPos(playerid,1755.5660,-1929.4365,13.5767);
    SetPlayerFacingAngle(playerid,270);
    }
    else
    {
    SendClientMessage(playerid,0xF50000FF,"Falsches Passwort");
    ShowPlayerDialog(playerid,logindialog,DIALOG_STYLE_INPUT,"Login","Gib dein Passwort ein!","Login","Tschüss");
    }
    }
    Wenn das nicht geht, schau mal ob das Passwort auch korrekt in der Datei steht.

  • Beitrag von RayJohnson ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Zitat

    True und false sagen in strcmp nur aus, ob die Groß bzw Kleinschreibung beachtet werden.

    :whistling: peinlich


    Schon mal vielen Dank! Der Dauer-Dialog hat aufgehört... allerdings kann ich mich jetzt mit einem x-beliebigen Passwort einloggen :huh:


    //Edit: Vergessen:


    Das Passwort wird komischerweise so gespeichert

    Zitat

    ÿPasswort=test

    stock Register(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    dini_Create(Spielerdatei);
    dini_Set(Spielerdatei,"Passwort",key);

  • Ich habe grade noch mal andere Accounts angelegt und geprüft.
    Vorerst scheint es so, als würde nur mein Acc mit dem "ÿPasswort" belastet.


    Bei anderen Acc's ging auch die Passwortabfrage ohne Probleme.
    Soweit kann ich also damit leben - vielen Dank :)

  • Das Problem kommt hin und wieder bei dieses Systemen vor. Das kannst du ganz leicht mit einem Trick umgehen, und zwar machst du die erste Zeile in der Datei als Dummy, also einfach den Stat XYZ mit dem Wert ABC, dann macht es nichts, wenn da ein y davor steht. Das Passwort kommt in die zweite Zeile und bekommt somit kein y vorangestellt.