Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

[ROZWIĄZANE] Problem z pluginem ( mysql )


  • Zamknięty Temat jest zamknięty
7 odpowiedzi w tym temacie

#1 speedkill

    Godlike

  • Przyjaciel

Reputacja: 1 592
Godlike

  • Postów:2 733
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Prudnik
Offline

Napisano 16.10.2011 21:53

Siemka mam taki problem z pluginem na mysql że wpis czasem się podwoi czasem po zmianie mapy komuś się to zresetuje.
Więc gdybyście mogli zobaczyć o co chodzi ;)
oto fragment zapisu i odczytu :
public mysqload(id)
{
	#if defined Mysql
	new name[32], szTemp[512]
	get_user_name(id, name, 31)	
	new Data[1]
	Data[0] = id
	
	format(szTemp,charsmax(szTemp),"SELECT * FROM `Skoki` WHERE (`Skoki`.`name` = '%s')", name)
	SQL_ThreadQuery(g_SqlTuple,"register_client",szTemp,Data,1)
	#endif
}
public register_client(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
	#if defined Mysql
	if(FailState == TQUERY_CONNECT_FAILED)
	{
		log_amx("Load - Could not connect to SQL database.  [%d] %s", Errcode, Error)
	}
	else if(FailState == TQUERY_QUERY_FAILED)
	{
		log_amx("Load Query failed. [%d] %s", Errcode, Error)
	}
	new id
	id = Data[0]
	if(!SQL_MoreResults(Query))
	{
		wczytaj(id)
		new name[32]
		get_user_name(id, name, 31)
		new szTemp[512]
		format(szTemp,charsmax(szTemp),"INSERT INTO `Skoki` ( `name` , `skoki`, `ranga`)VALUES ('%s',0,'%s');",name,ranga[id])
		SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp)
	}
	else 
	{
		skoki[id]         = SQL_ReadResult(Query, 1)
		return PLUGIN_HANDLED
		
	}
	return PLUGIN_HANDLED
	#endif
}
public mysqlsave(id)
{
	#if defined Mysql
	new szTemp[512]
	new name[32]
	get_user_name(id, name, 31)
	
	wczytaj(id)
	format(szTemp,charsmax(szTemp),"UPDATE `Skoki` SET `skoki` = %d,`ranga` = '%s' WHERE `Skoki`.`name` = '%s';",skoki[id],ranga[id], name)
	SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp)
	#endif
}
Pozdrawiam speedkill ;)
Dziękuje z góry za pomoc

Użytkownik speedkill123 edytował ten post 16.10.2011 21:54

  • +
  • -
  • 0

If you can dream it, you can do it.


#2 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 16.10.2011 22:53

na pewno nick powinien zostać zabezpieczony przed SQL Injection
z tego co widzę to zanim zapiszesz coś wczytujesz, a tak nie powinno być jeśli używasz wątków (SQL_ThreadQuery)

Co poradzić?

dodaj slashe przed specjalnymi znakami ' \ itd oraz zablokuj zapis jeśli nie wczytano

więcej nie powiem dopóki nie pokażesz reszty kodu, bo zwyczajnie nie widać błędu
  • +
  • -
  • 1

#3 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 17.10.2011 06:46

Nick gracza może zawierać \ ? Z tego co wiem, to gra blokuje takie nicki, choć nie wiem jak to jest w przypadku, gdy nick z \ dodamy do naszego cfg.
  • +
  • -
  • 1

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#4 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 17.10.2011 09:19

Na pewno może zawierać ' a to najłatwiejszy sposób na injection
  • +
  • -
  • 0

#5 speedkill

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 1 592
Godlike

  • Postów:2 733
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Prudnik
Offline

Napisano 17.10.2011 14:49

R3X , tu masz cały kod jest on rozbity na pliki inl wiem jest on nie optymalny itp :D
Hasło takie jak twój tytuł użytkownika :)
Ps.Sorki R3X że prosiłem o pomoc na steam :]

Załączone pliki

  • Załączony plik  R3X.rar   4,54 KB  21 Ilość pobrań

Użytkownik speedkill123 edytował ten post 17.10.2011 15:21

  • +
  • -
  • 0

If you can dream it, you can do it.


#6 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 17.10.2011 17:40

Na pewno może zawierać ' a to najłatwiejszy sposób na injection

A tym to ja wiem, chodziło mi tylko o samo \ ;]
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#7 speedkill

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 1 592
Godlike

  • Postów:2 733
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Prudnik
Offline

Napisano 18.10.2011 21:08

Poradziłem sobie ;)
Dziękuje za wypowiedzi wyżej po + panowie :]
Można close
  • +
  • -
  • 0

If you can dream it, you can do it.


#8 Onyke

    Godlike

  • Przyjaciel

Reputacja: 708
Guru

  • Postów:2 178
Offline

Napisano 18.10.2011 21:20

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych