mysql_real_escape_string
#1

Salutare.Poate cineva sa ma ajute cu unele indrumari in legatura cu mysql_real_escape_string?
Cum trebuie sa arate linia de cod mai exact?
Stiu ca trebuie folosit atunci cand player-ul scrie ceva ce se duce catre baza de date.Dar nu stiu cum mai exact sa folosesc aceasta functie .Trebuiesc declarate niste caractere interzise pe undeva sau cum?
Am incercat sa o folosesc pentru comanda de schimbare a parolei,dar nu functioneaza.Cand introduc %n imi inchide serverul.O sa las partea de cod mai jos,poate cineva o sa imi explice ce si unde am gresit.

Code:
if(strlen(inputtext) > 1 && strlen(inputtext) < 16)
			{
				new tmppass[64],namee[30],playerip[16];
				mysql_real_escape_string(inputtext, tmppass);
				strmid(PlayerInfo[playerid][pKey], tmppass, 0, strlen(tmppass), 255);
				format(string,sizeof(string),"Your new password is %s.",tmppass);
				SendClientMessage(playerid, COLOR_YELLOW,string);
				GetPlayerName(playerid, namee, sizeof(namee));
				GetPlayerIp(playerid, playerip, sizeof(playerip));
				format(string,sizeof(string),"%s[user:%d] changed his password. IP: %s",namee,PlayerInfo[playerid][pSQLID],playerip);
				ABroadCast(COLOR_YELLOW, string,1);
				GetPlayerName(playerid,sendername,sizeof(sendername));
				new str2[240];
		        mysql_format(SQL, str2, sizeof(str2), "UPDATE users SET `password`='%s' WHERE `name`='%s\'",PlayerInfo[playerid][pKey], PlayerInfo[playerid][pNormalName]);
		        mysql_tquery(SQL,str2,"","");
				return 1;
			}
Reply
#2

Codul tau este ok,doar ca trebuie definite niste caractere invalide,trebuie sa faci un IF si sa declari acolo toate functiile,daca nu stii cum voi incerca sa te ajut maine cand ajung.
Reply
#3

De ce nu faci un simplu strfind? (in viata pana nu va complicati nu se poate...)
Reply
#4

la ce strfind dacă query-ul merge direct la baza de date? Funcția aia o folosește să prevină injectarea bazei de date.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)