Wysłany: 2016-04-09, 10:24
JotP
Wiek: 26 Na forum: 4821 dni Posty: 217
Piwa : 1215
Cze??,
Tak z nud?w napisa?em sobie rejestracje w MySQL, ale mam problem xD.
A wi?c, jesli konto instnieje i wpisze sie tekst kt?r? zawiera has?o to system odczyta to jako poprawne has?o. Nie potrafie tego dok?adnie wyt?umaczy? wi?c macie przyk?ad:
Kod: has?o to : umyjsie22
a ty wpiszesz: umyjsie2222
To system uzna to jako poprawne has?o.
Nast?pny problem to jesli si? ju? zalogujesz to nie wczytuje danych z bazy danych np. zapis kasy czy score.
Ostatni problem to taki ?e gdy stworzysz nowe konto, to gm wysy?a zapytanie do bazy danych ale w bazie nie ma ?ladu nowej tabeli.
kod:
Pawn public OnDialogResponse ( playerid , dialogid , response , listitem , inputtext [])
{
switch( dialogid )
{
//################################################################################## [MySQL] Login and Register system
case DIALOG_ID_LOGIN :
{
if( strlen ( inputtext ) == 0 ) //If the player didn't enter anything
{
ShowPlayerDialog ( playerid , DIALOG_ID_LOGIN , DIALOG_STYLE_PASSWORD , "Zaloguj sie" , "Aby sie zalogowac, musisz wpisac jakies haslo ponizej." , "Zaloguj" , "Wyjdz" );
}
else //If player did enter something
{
new EscapedPassword [ 50 ], query [ 80 ];
mysql_real_escape_string ( inputtext , EscapedPassword ); //Save the inputted password in the variable
format ( query , sizeof ( query ), "SELECT * FROM `users` WHERE `username` = '%s' AND `password` = '%s';" , playername ( playerid ), EscapedPassword );
mysql_query ( query ); //Send the query
mysql_store_result (); //Store the results
if( mysql_num_rows () != 0 ) //If the password is correct
{
SendClientMessage ( playerid , - 1 , "{FF0000}Zostales zalogowany!" );
//########################################################## Load the player's stats
SystemLoadPlayerStats ( playerid );
}
else //If it isn't
{
ShowPlayerDialog ( playerid , DIALOG_ID_LOGIN , DIALOG_STYLE_PASSWORD , "Zaloguj sie" , "Aby sie zalogowac, musisz wpisac poprawne haslo ponizej." , "Zaloguj" , "Wyjdz" );
}
mysql_free_result (); //Free the results
}
}
case DIALOG_ID_REGISTER :
{
if( strlen ( inputtext ) == 0 ) //If the player didn't enter anything
{
ShowPlayerDialog ( playerid , DIALOG_ID_REGISTER , DIALOG_STYLE_PASSWORD , "Zaloz konto" , "Aby zalozyc nowe konto, musisz wpisac jakies haslo ponizej." , "Rejestruj" , "Wyjdz" );
}
else //If player did enter something
{
new EscapedPassword [ 50 ], query [ 256 ];
mysql_real_escape_string ( inputtext , EscapedPassword ); //Save the inputted password into a variable
format ( query , sizeof ( query ), "INSERT INTO `users` (`username`, `password`, `money`, `score`) VALUES ('%s', '%s, '7000', '0');" , playername ( playerid ), EscapedPassword );
mysql_query ( query ); //Send the query
printf ( query );
SendClientMessage ( playerid , - 1 , "{FF0000}Zalozyles nowe konto!" );
GivePlayerMoney ( playerid , 7000 );
}
}
}
return 1 ;
}
Pawn
public SystemLoadPlayerStats ( playerid )
{
new query [ 80 ];
format ( query , sizeof ( query ), "SELECT `money` AND `score` FROM `users` WHERE `username` = '%s';" , playername ( playerid ));
mysql_query ( query ); //Send the query
mysql_store_result (); //Store the results
mysql_fetch_row_format ( query , "|" );
sscanf ( query , "e<p<|>ii>" , PlayerInfo [ playerid ][ Money ], PlayerInfo [ playerid ][ Score ]);
mysql_free_result (); //Free the results
//##########################################################################################
GivePlayerMoney ( playerid , PlayerInfo [ playerid ][ Money ]);
SetPlayerScore ( playerid , PlayerInfo [ playerid ][ Score ]);
return 1 ;
}
Wysłany: 2016-04-09, 11:55
Combacior
Wiek: 29 Na forum: 5796 dni Posty: 1516
Piwa : 2161
Kod: SELECT * FROM `users` WHERE `username` = '%s' AND `password` = '%s';
Ten tekst ma 68 znak?w, a tablica, kt?rej u?ywasz do sformatowania tekstu ma limit 80 znak?w (tak dok?adnie to 79), wi?c gdzie tutaj zmie?ci? jeszcze nick gracza i wpisane has?o.
To po raz, po dwa - zapytanie SELECT raczej nie mo?e tak wygl?da?
Kod: SELECT `money` AND `score` FROM `users` WHERE `username` = '%s';
Zawsze AND stosowa?em tylko i wy??cznie przy WHERE. Zamiast AND powinien by? przecinek, zawsze w logach mo?esz sprawdzi?, czy s? jakie? b??dy.
Po trzy, funkcja sscanf
Kod: sscanf(query, "e<p<|>ii>", PlayerInfo[playerid][Money], PlayerInfo[playerid][Score]);
Chyba nie wiesz jak u?ywa? poszczeg?lnych znacznik?w, mo?esz o tym poczyta? na forum sampa, jest to tam bardzo dok?adnie opisane. Tymczasem naj?atwiejszy spos?b
Kod: sscanf(query, "p<|>ii", PlayerInfo[playerid][Money], PlayerInfo[playerid][Score]);
Dodatkowo niezalecane jest przetrzymywanie hase? bez ?adnej metody hashowania, bo jak b?dzie jaki? wyciek, to kto? b?dzie w posiadaniu hase? graczy, kt?rzy w wi?kszo?ci has?o maj? jedno do wszystkiego. Kombinacja MD5 i SHA jest wystarczaj?ca na sampolka.
Wysłany: 2016-04-09, 12:27
JotP
Wiek: 26 Na forum: 4821 dni Posty: 217
Piwa : 1215
"Combacior" napisał/a : Kod: SELECT * FROM `users` WHERE `username` = '%s' AND `password` = '%s';
Ten tekst ma 68 znak?w, a tablica, kt?rej u?ywasz do sformatowania tekstu ma limit 80 znak?w (tak dok?adnie to 79), wi?c gdzie tutaj zmie?ci? jeszcze nick gracza i wpisane has?o.
To po raz, po dwa - zapytanie SELECT raczej nie mo?e tak wygl?da?
Kod: SELECT `money` AND `score` FROM `users` WHERE `username` = '%s';
Zawsze AND stosowa?em tylko i wy??cznie przy WHERE. Zamiast AND powinien by? przecinek, zawsze w logach mo?esz sprawdzi?, czy s? jakie? b??dy.
Po trzy, funkcja sscanf
Kod: sscanf(query, "e<p<|>ii>", PlayerInfo[playerid][Money], PlayerInfo[playerid][Score]);
Chyba nie wiesz jak u?ywa? poszczeg?lnych znacznik?w, mo?esz o tym poczyta? na forum sampa, jest to tam bardzo dok?adnie opisane. Tymczasem naj?atwiejszy spos?b
Kod: sscanf(query, "p<|>ii", PlayerInfo[playerid][Money], PlayerInfo[playerid][Score]);
Dodatkowo niezalecane jest przetrzymywanie hase? bez ?adnej metody hashowania, bo jak b?dzie jaki? wyciek, to kto? b?dzie w posiadaniu hase? graczy, kt?rzy w wi?kszo?ci has?o maj? jedno do wszystkiego. Kombinacja MD5 i SHA jest wystarczaj?ca na sampolka.
Dzieki stary! Mia?em rok przerwy od sampa i pawn. ?ap piwko i respekt
Tagi: rejestracja :: mysql
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: