Login register/system MySQL

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 liebe Community ich habe ein Problem mit meinem login und register system und zwar wenn ich mich einloggen will kommt immer das passwort ist falsch weiß jemand woran das liegen könnte?
    if(dialogid==DIALOG_REGISTER)
    {
    new name[MAX_PLAYER_NAME],query[128],passwort[20];
    GetPlayerName(playerid,name,sizeof(name));
    if(response)
    {
    if(strlen(inputtext)>3)
    {
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"INSERT INTO user (username,password,level,money) VALUES ('%s',('%s'),'%i','%i')",name,MD5_Hash(passwort),1,1500);
    mysql_pquery(dbhandle,query,"","");
    SetPlayerScore(playerid,1);
    GivePlayerMoney(playerid,1500);
    }
    else
    {
    SendClientMessage(playerid,ROT,"Dein Passwort muss mindestens 4 Zeichen lang sein!");
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Registrierung","Gib bitte dein gewünschtes Passwort an:","Weiter","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    }
    if(dialogid==DIALOG_LOGIN)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[128],passwort[20];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>0)
    {
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"SELECT * FROM `user` WHERE username='%s' AND password=MD5('%s')",name,MD5_Hash(passwort));
    mysql_pquery(dbhandle,query,"AccountLaden","i",playerid);
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du hast kein Passwort angegeben");
    ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"Login","Gib bitte dein Passwort ein:","Login","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    }
    public OnPlayerConnect(playerid)
    {
    //Register/login
    new name[MAX_PLAYER_NAME],query[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(query,sizeof(query),"SELECT * FROM user WHERE username='%s'",name);
    mysql_pquery(dbhandle,query,"AccountAnlegen","i",playerid);
    return 1;
    }
    SpielerSpeichern(playerid)
    {
    if(sInfo[playerid][eingeloggt]==0)return 1;
    new name[MAX_PLAYER_NAME],query[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(query,sizeof(query),"UPDATE `user` SET `level` = '%i',`money` = '%i',`alevel` = '%i' WHERE `username` = '%s'",sInfo[playerid][level],GetPlayerMoney(playerid),sInfo[playerid][alevel],name);
    mysql_pquery(dbhandle,query,"","");
    return 1;
    }
    ResetPlayer(playerid)
    {
    sInfo[playerid][level]=0;
    sInfo[playerid][eingeloggt]=0;
    sInfo[playerid][id]=0;
    sInfo[playerid][alevel]=0;
    return 1;
    }
    public OnPlayerDisconnect(playerid, reason)
    {
    SpielerSpeichern(playerid);
    ResetPlayer(playerid);
    return 1;
    }
    public AccountAnlegen(playerid)
    {
    new num_rows,num_fields;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows== 0)
    {
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Registrierung","Gib bitte dein gewünschtes Passwort an:","Weiter","Abbrechen");
    }
    else
    {
    ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"Login","Gib bitte dein Passwort ein:","Login","Abbrechen");
    }
    return 1;
    }
    public AccountLaden(playerid)
    {
    new num_rows,num_fields;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows== 1)
    {
    //paswort richtig
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    sInfo[playerid][eingeloggt] = 1;
    SetPlayerScore(playerid,cache_get_field_content_int(0,"level",dbhandle));
    sInfo[playerid][id] = cache_get_field_content_int(0,"id",dbhandle);
    SetPlayerMoney(playerid,cache_get_field_content_int(0,"money",dbhandle));
    sInfo[playerid][alevel] = cache_get_field_content_int(0,"alevel",dbhandle);
    }
    else
    {
    //passwort falsch
    SendClientMessage(playerid,ROT,"Das eingegebene Passwort ist falsch!");
    ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"Login","Gib bitte dein Passwort ein:","Login","Abbrechen");
    }
    return 1;
    }



    Das ist das ganze sytem mit halt oben ein paar definitionen etc.?

  • Du hashst das Passwort doppelt.
    format(query,sizeof(query),"SELECT * FROM `user` WHERE username='%s' AND password=MD5('%s')",name,MD5_Hash(passwort));


    Zu
    format(query,sizeof(query),"SELECT * FROM `user` WHERE username='%s' AND password='%s'",name,MD5_Hash(passwort));

  • Hallo,
    Ich habe es jetzt nach diesem turorial gemacht:
    [ SCRIPTING ] MySQL R39-3 Register/Login System


    und bekomme folgende warnings:
    [pwn(150) : warning 206: redundant test: constant expression is non-zero
    (154) : warning 225: unreachable code
    (345) : warning 219: local variable "ip" shadows a variable at a preceding level
    (345) : warning 219: local variable "password" shadows a variable at a preceding level
    (403) : warning 217: loose indentation][/pwn]


    Ich habe versucht es nach meiner Mysql tabelle anzupassen.
    Hier die warnings:

    public OnPlayerConnect(playerid)
    {
    for(new i;playerInfo:1 < playerInfo; i++) //Zeile 150
    {
    sInfo[playerid][playerInfo:i] = 0;
    }
    IstRegistriert[playerid] = 0; //Zeile 154
    GetPlayerName(playerid, name[playerid], 24);
    GetPlayerIp(playerid, ip[playerid], 16);
    new query[128];
    mysql_format(dbhandle, query, sizeof(query), "SELECT * FROM `user` WHERE `username` = '%e' LIMIT 1", name[playerid]);
    mysql_tquery(dbhandle, query, "AccountAnlegen", "i", playerid);
    return 1;
    }


    public OnRconLoginAttempt(ip[], password[], success)//Zeile 345
    {
    return 1;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    switch(dialogid)
    {
    case DIALOG_LOGIN:
    {
    if(!response) Kick(playerid);
    new query[256];
    WP_Hash(db_pass,129,inputtext);
    if(strlen(db_pass) && !strcmp(db_pass, sInfo[playerid][password]))
    {
    mysql_format(dbhandle,query,sizeof(query), "SELECT * FROM `user` WHERE `username` = '%e' LIMIT 1", name[playerid]);
    mysql_tquery(dbhandle,query,"AccountLaden", "i", playerid);
    }
    else
    {
    ShowPlayerDialog(playerid,2, DIALOG_STYLE_INPUT, "Login", "Dein Account wurde gefunden. Bitte gib nun dein Passwort ein\nFalsches Passwort!", "Einloggen", "Abbrechen");
    }
    }
    case DIALOG_REGISTER:
    {
    if(!response) return Kick(playerid);
    if(strlen(inputtext) < 6) return ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Register","Dein Account wurde nicht gefunden! Bitte gib nun dein gewünschtes Passwort ein.\nDein Passwort muss länger als 6 Zeichen sein!", "Registrieren", "Abbrechen");
    new query[300];
    WP_Hash(sInfo[playerid][password], 129, inputtext);
    mysql_format(dbhandle, query, sizeof(query), "INSERT INTO `user` (`username`, `password`,`ip`, `level`, `money`, `alevel`) VALUES ('%e', '%s', '%s',1, 1500, 0)", name[playerid], sInfo[playerid][password], ip[playerid]);
    mysql_tquery(dbhandle, query, "AccountAnlegen", "i", playerid);
    }
    }
    return 1;//Zeile 403
    }



    Meine enum:
    enum playerInfo{
    eingeloggt,
    id,
    password,
    level,
    money,
    alevel
    }


    Das alte System steht ja oben da seht ihr meine Daten die geladen werden sollen


    Hier meine Struktur und die Daten:
    http://www.pic-upload.de/view-27890464/hhp.png.html


    http://www.pic-upload.de/view-27890473/pph.png.html