Szerző Téma: Mysql bejelentkezés problem  (Megtekintve 777 alkalommal)

Nem elérhető Petrik

  • 318
    • Profil megtekintése
Mysql bejelentkezés problem
« Dátum: 2013. október 22. - 16:38:00 »
0 Show voters
Sziasztok!
Újabb mysql problémám lenne: elkezdtem egy regisztrációs rendszert, minden megy, kivéve a bejelentkezés. A jó jelszóra is azt írja, hogy rossz. Lehet, nagy hülyeség az egész, de ebben a témában még kezdõ vagyok.
 

[...]
if(!response) Kick(playerid);
new string[128];
format(string,sizeof(string),\"SELECT `password` FROM `users` WHERE `username`=\'%s\'\",pName(playerid));
mysql_query(string);
if(mysql_fetch_int() == strval(inputtext))
{
SendClientMessage(playerid, COLOR_GREEN, \"Sikeresen bejelentkeztél!\");
PlayerInfo[playerid][belepve] = 1;
}
else
{
SendClientMessage(playerid, COLOR_RED, \"Hibás jelszó!\");
PlayerInfo[playerid][belepve] = 0;
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,\"Bejelentkezés\",\"Üdv!\\nKérlek írd be a jelszavad.\",\"Belépés\",\"Kilépés\");
[...]
}

Nem elérhető Rupert

  • 2301
    • Profil megtekintése
Mysql bejelentkezés problem
« Válasz #1 Dátum: 2013. október 22. - 16:54:35 »
0 Show voters
A mysql_fetch_int az integerekhez való, nem stringhez. Itt a helyes kód:
 

if(!response) Kick(playerid);
new string[128];
format(string,sizeof(string),\"SELECT `password` FROM `users` WHERE `username`=\'%s\'\",pName(playerid));
mysql_query(string);
new jelszo[128], line[256];
if(mysql_fetch_row_format(line, \"|\"))
{
sscanf(line, \"p<|>s[128]\", jelszo);
}
if(!strcmp(jelszo, inputtext, true))
{
SendClientMessage(playerid, COLOR_GREEN, \"Sikeresen bejelentkeztél!\");
PlayerInfo[playerid][belepve] = 1;
}
else
{
SendClientMessage(playerid, COLOR_RED, \"Hibás jelszó!\");
PlayerInfo[playerid][belepve] = 0;
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,\"Bejelentkezés\",\"Üdv!\\nKérlek írd be a jelszavad.\",\"Belépés\",\"Kilépés\");
[...]
}

Nem elérhető Petrik

  • 318
    • Profil megtekintése
Mysql bejelentkezés problem
« Válasz #2 Dátum: 2013. október 22. - 19:34:12 »
0 Show voters

A mysql_fetch_int az integerekhez való, nem stringhez. Itt a helyes kód:
 

if(!response) Kick(playerid);
new string[128];
format(string,sizeof(string),\"SELECT `password` FROM `users` WHERE `username`=\'%s\'\",pName(playerid));
mysql_query(string);
new jelszo[128], line[256];
if(mysql_fetch_row_format(line, \"|\"))
{
sscanf(line, \"p<|>s[128]\", jelszo);
}
if(!strcmp(jelszo, inputtext, true))
{
SendClientMessage(playerid, COLOR_GREEN, \"Sikeresen bejelentkeztél!\");
PlayerInfo[playerid][belepve] = 1;
}
else
{
SendClientMessage(playerid, COLOR_RED, \"Hibás jelszó!\");
PlayerInfo[playerid][belepve] = 0;
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,\"Bejelentkezés\",\"Üdv!\\nKérlek írd be a jelszavad.\",\"Belépés\",\"Kilépés\");
[...]
}

 

[/quote]
Köszönöm a választ, de már mindig azt írja, hogy \"sikeresen bejelentkeztél\".

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
Mysql bejelentkezés problem
« Válasz #3 Dátum: 2013. október 23. - 09:30:19 »
+1 Show voters
Nem tudom minek bonyolítod túl darabolgatással...
 
format(string, sizeof(string), \"SELECT `password` FROM `users` WHERE `username`=\'%s\'\", pName(playerid)); // Megadod a lekérdezést
mysql_query(string); // Lekérdezed az adatot
mysql_store_result(); // Eltárolod az adatot
mysql_fetch_row(string); // Beolvasod a sort
new string2[256]; // Létrehozol egy új változót
format(string2, sizeof(string2), \"%s\", string); // Eltárolod a kapott adatot az új változóba
mysql_free_result(); // Felszabadítod az erõforrást
SendClientMessage(playerid, SZIN, string2); // A lekérdezett adatot késõbb is tudod használni, ugyanakkor fel van szabadítva az erõforrásod más lekérdezésekhez

Nem elérhető Petrik

  • 318
    • Profil megtekintése
Mysql bejelentkezés problem
« Válasz #4 Dátum: 2013. október 23. - 09:34:11 »
0 Show voters

Nem tudom minek bonyolítod túl darabolgatással...
 
format(string, sizeof(string), \"SELECT `password` FROM `users` WHERE `username`=\'%s\'\", pName(playerid)); // Megadod a lekérdezést
mysql_query(string); // Lekérdezed az adatot
mysql_store_result(); // Eltárolod az adatot
mysql_fetch_row(string); // Beolvasod a sort
new string2[256]; // Létrehozol egy új változót
format(string2, sizeof(string2), \"%s\", string); // Eltárolod a kapott adatot az új változóba
mysql_free_result(); // Felszabadítod az erõforrást
SendClientMessage(playerid, SZIN, string2); // A lekérdezett adatot késõbb is tudod használni, ugyanakkor fel van szabadítva az erõforrásod más lekérdezésekhez

 

[/quote]
Nagyon köszönöm, ezt meg is értem, és mûködik is! Ment az óriási +!

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal