Register / Login wird nicht angezeigt.

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

  • //MySQL DATA
    forward UserCheck(playerid);
    public UserCheck(playerid)
    {
    new num_rows, num_fields;
    cache_get_data(num_rows,num_fields,Handle);
    SetPlayerVirtualWorld(playerid,1);
    if(num_rows = 0)
    {
    //Register
    ClearChat(playerid);
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Neuanfang","Herzlich Willkommen,\n auf unserem Game Server: bitte gebe dein Password ein.","Register","Abbrechen");
    }
    else
    {
    //Login
    ClearChat(playerid);
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Anmeldung","bitte gebe dein Password ein.","Login","Abbrechen");
    }
    return 1;
    }



    stock Spielername(playerid)
    {
    new Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Name,MAX_PLAYER_NAME);
    return Name;
    }


    public OnPlayerConnect(playerid)
    {


    new query[256];
    mysql_format(Handle, query, sizeof(query),"SELCET * FROM accounts WHERE Name='%e'",Spielername(playerid));
    mysql_tquery(Handle,query,"UserCheck","i",playerid);
    ClearChat(playerid);
    TogglePlayerSpectating(playerid,1);
    return 1;
    }


    enum Data{
    db_id,
    pName,
    pLoggedIn,
    pGeschlecht,
    pSkin
    };


    Bitte umhilfe.

  • Was hast du bei OnPlayerRequst stehen?


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    return 1;
    }


    public OnPlayerClickPlayer(playerid, clickedplayerid, source)
    {
    return 1;
    }


    //MySQL DATA
    forward UserCheck(playerid);
    public UserCheck(playerid)
    {
    new num_rows, num_fields;
    cache_get_data(num_rows,num_fields,Handle);
    SetPlayerVirtualWorld(playerid,1);
    if(num_rows = 0)
    {
    //Register
    ClearChat(playerid);
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Neuanfang","Herzlich Willkommen,\n auf unserem Game Server: bitte gebe dein Password ein.","Register","Abbrechen");
    }
    else
    {
    //Login
    ClearChat(playerid);
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Anmeldung","bitte gebe dein Password ein.","Login","Abbrechen");
    }
    return 1;
    }

  • Dann Printe mal

    forward UserCheck(playerid);
    public UserCheck(playerid)
    {
    print("1");
    new num_rows, num_fields;
    cache_get_data(num_rows,num_fields,Handle);
    SetPlayerVirtualWorld(playerid,1);
    if(num_rows = 0)
    {
    //Register
    print("2");
    ClearChat(playerid);
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Neuanfang","Herzlich Willkommen,\n auf unserem Game Server: bitte gebe dein Password ein.","Register","Abbrechen");
    }
    else
    {
    //Login
    print("3");
    ClearChat(playerid);
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Anmeldung","bitte gebe dein Password ein.","Login","Abbrechen");
    }
    return 1;
    }

    und sag mal was kommt

  • und sag mal was kommt


    [21:53:00] [DEBUG] mysql_format - connection: 1, len: 256, format: "SELCET * FROM accounts WHERE Name='%e'"
    [21:53:00] [DEBUG] mysql_tquery - connection: 1, query: "SELCET * FROM accounts WHERE Name='Emrys.'", callback: "UserCheck", format: "i"
    [21:53:00] [DEBUG] CMySQLQuery::Execute[UserCheck] - starting query execution
    [21:53:00] [ERROR] CMySQLQuery::Execute[UserCheck] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SELCET * FROM accounts WHERE Name='Emrys.'' at line 1
    [21:53:00] [DEBUG] CMySQLQuery::Execute[UserCheck] - error will be triggered in OnQueryError

  • Ersetze im SELECT Befehl %e durch %s! Danach sollte es funktionieren war zumindestens bei mir so.

    Wenn man dies tut, wird der String aber nicht mehr escapt, das bedeutet, dass SQL-Injections möglich sind.


    PS: Wobei das beim Namen trivial ist, da im Namen keine Sonderzeichen verwendet werden können, aber Vorsicht ist die Mutter der Prozellankiste :D

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S