Szerző Téma: Bejelentkezés MySQL probléma  (Megtekintve 546 alkalommal)

Nem elérhető tudvari

  • 1264
  • Fejlesztő
    • Profil megtekintése
Bejelentkezés MySQL probléma
« Dátum: 2013. május 26. - 20:35:28 »
0 Show voters
Sziasztok,ismét problémám van a MySQL-el.
A bejelentkezési parancsom lefut az sscanf-es részig,de onnan tovább már nem megy.
 
new jelszo[16];
        if(sscanf(params,\"s\",jelszo)) return SendClientMessage(playerid,-1,\"Használat: /bejelentkezes [Jelszó]\");
            new escapepass[100]; //
            mysql_real_escape_string(jelszo, escapepass); //We escape the inputtext to avoid SQL injections.
            format(query, sizeof(query), \"SELECT `nev` FROM felhasznalok WHERE nev = \'%s\' AND jelszo = SHA1(\'%s\')\", pname, escapepass);
            mysql_query(query);
            mysql_store_result();
            new numrows = mysql_num_rows();
            if(numrows == 1)
            {
               new savingstring[20];
       GetPlayerName(playerid, pname, 24);
       format(query, sizeof(query), \"SELECT * FROM felhasznalok WHERE nev = \'%s\'\", pname);
       //We only select the variables that we want to use.
       //We don\'t need things like the password string or the user string.
       mysql_query(query); //Queries the result
       mysql_store_result(); //Store a result because it\'s a SELECT statement.
       while(mysql_fetch_row_format(query,\"|\"))
       {
           //We use while so that it does a single query, not multiple
           //Especially when we have more variables. If there is more
           //Variables, you should just split the line with sscanf. To
           //Make it easier.
           mysql_fetch_field_row(savingstring, \"szint\"); Szint[playerid] = strval(savingstring);
           mysql_fetch_field_row(savingstring, \"xp\"); XP[playerid] = strval(savingstring);
           mysql_fetch_field_row(savingstring, \"perc\"); Perc[playerid] = strval(savingstring);
           mysql_fetch_field_row(savingstring, \"ora\"); Ora[playerid] = strval(savingstring);
           mysql_fetch_field_row(savingstring, \"penz\"); Penz[playerid] = strval(savingstring);
           //If you are wondering why I\'m using savingstring instead
           //Of a variable like using MoneyGiven right away, it\'s because
           //mysql_fetch_field_row requires a string.
       }
       mysql_free_result(); //We must always free a stored result
       SendClientMessage(playerid, -1, \"Sikeresen bejelentkeztél!\"); //Sends the client a message.
       Belepve[playerid] = 1; //Sets our logged in variable to one
       printf(\"%s bejelentkezett.\",pname);
            }
            //This means that there is a user in the database with the same
            //password that we typed, we now proceed by using the login function.
            if(!numrows)
            {
                //This means that the password that the player
                //typed was incorrect and we will resend the dialog.
                new string[64];
                if(JelszoLehetosegek[playerid] > 1)
                {
                    JelszoLehetosegek[playerid] --;
                format(string,sizeof(string),\"Rossz jelszó,még ennyi lehetõséged van: %d\",JelszoLehetosegek[playerid]);
         SendClientMessage(playerid,-1,string);
         printf(\"% elrontotta a jelszavát.\",pname);
                                        return 1;
      }
      else if(JelszoLehetosegek[playerid] ==1 )
      {
          SendClientMessage(playerid,-1,\"Minden lehetõségedet elrontottad,ezért ki lettél rúgva!\");
          Kick(playerid);
          printf(\"%s ki lett rúgva mert háromszor rossz jelszót írt be.\",pname);
      }
            }
            mysql_free_result();

 
Na már csak az a hiba,hogy a jót is rossznak érzékeli.Elõre is köszi a segítséget.
Másik:
Valamiért 16 karakternél hosszabb jelszót is elfogad regisztrációnál.
 
CMD:regisztracio(playerid,params[])
{
if(IsPlayerConnected(playerid))
{
new query[200]; //Creates our variables.
    GetPlayerName(playerid, nev, sizeof(nev)); //Gets the players name
    format(query, sizeof(query), \"SELECT IP FROM `felhasznalok` WHERE nev = \'%s\' LIMIT 1\", nev); //Formats the query, view above the code for a explanation
    mysql_query(query); //This is our query function to query the string
    mysql_store_result(); //We store the result.
    new rows = mysql_num_rows(); //We get how many rows the query returned.
    if(rows == 0)
    {
    new jelszo[16];
        if(sscanf(params,\"s[16]\",jelszo)) return SendClientMessage(playerid,-1,\"Használat: /regisztracio [Jelszó]\");
        if(strlen(jelszo) >=4 && strlen(jelszo) <= 16)
        {
           new IP[16];
          GetPlayerIp(playerid, IP, 16);
          format(query, sizeof(query), \"INSERT INTO felhasznalok(id, nev, jelszo, szint, penz, IP, xp, perc, ora, ban ) VALUES( 0,\'%s\', SHA1(\'%s\'), 1, 0, \'%s\', 0, 0, 0, 0)\", nev, jelszo, IP);
          mysql_query(query);
          SendClientMessage(playerid,-1,\"Sikeresen regisztráltál a szerverre!Használd a /bejelentkezes [jelszo] parancsot!\");
          printf(\"%s regisztrált a szerverre.\",nev);
        }
        else SendClientMessage(playerid,-1,\"A jelszó hosszúsága minium 4 karakter,maximum 16 karakter.\");
}
else SendClientMessage(playerid,-1,\"Már regisztráltál a szerverre!\");
}
return 1;
}

 

Dupla hozzászólás automatikusan összefûzve. ( 2013. május 28. - 05:44:14 )

valaki?
« Utoljára szerkesztve: 2013. május 28. - 05:44:14 írta tudvari »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal