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

Brak bana po screenshotach z powodu apostrofu w nicku admina


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
4 odpowiedzi w tym temacie

#1 Vuko

    Życzliwy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:21
Offline

Napisano 18.10.2017 15:24

Siema, od jakiegoś czasu mamy dziwny problem.

 

Otóż admini, którzy mają apostrof ( ' ) muszą ręcznie banować z powodem "wstaw ssy na xyz" ponieważ po zrobieniu ssów, podejrzany nie dostaje automatycznego bana. W konsoli pokazuje się taki błąd:

8:51:19: [amxbans_main.amxx] [AMXBans] Message: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 't speak don\\'t cry','S','Wstaw screeny na xyz ',UNIX_TIMESTAMP(NOW()),' at line 1 (1064)
L 10/17/2017 - 18:51:19: [amxbans_main.amxx] [AMXBans] Query statement: 
Dzieje się tak tylko i wyłącznie w przypadku ssów. Gdy dają inne bany od 5 min do perma, wszystko działa jak powinno. Ma ktoś pomysł jak to rozwiązać? Przyznam że pierwszy raz spotykam się z taką sytuacją.

Pozdrawiam.

  • +
  • -
  • 0

#2 wacho

    Pomocny

  • Użytkownik

Reputacja: 17
Początkujący

  • Postów:64
  • GG:
  • Imię:Jakub
Offline

Napisano 18.10.2017 15:43

podmien plik 

Załączone pliki


  • +
  • -
  • 1

#3 Vuko

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:21
Offline

Napisano 19.10.2017 16:57

podmien plik 

Nadal wyskakuje ten sam błąd. Wydaje mi się, że to coś z MySQL po prostu tylko nie wiem co. Pierwszy raz w moim CSowym życiu napotykam ten błąd :|


Użytkownik Vuko edytował ten post 19.10.2017 16:58

  • +
  • -
  • 0

#4 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

  • Postów:501
  • GG:
  • Imię:Radek
  • Lokalizacja:Tak
Offline

Napisano 19.10.2017 19:06

 

podmien plik 

Nadal wyskakuje ten sam błąd. Wydaje mi się, że to coś z MySQL po prostu tylko nie wiem co. Pierwszy raz w moim CSowym życiu napotykam ten błąd :|

 

 

Plugin, w którym występuje problem, korzysta z informacji pobranych ze zdalnej bazy danych. Do komunikacji z bazą, a raczej do pobierania z niej odpowiednich danych, stosowany jest język SQL. W składni tego języka wyróżnia się pewne wrażliwe znaki - są to m.in. \, ', `, oraz feralny ". Każdy znak ma przypisaną inną funkcję. W Twoim przypadku następuje zaburzenie ciągłości treści żądania i baza danych zamiast zwrócić tabelę wynikową - zwraca błąd. Jak to wygląda? O tak:

SELECT cos_tam FROM  jakas_baza WHERE nazwa_gracza="Kowalski";

Wszystko jest ok, dopóki ten Kowalski nie urozmaici sobie nick'u:

SELECT cos_tam FROM  jakas_baza WHERE nazwa_gracza="Kow"alski";

Jak widzisz, kwerenda jest skonstruowana nieprawidłowo - serwer SQL szukałby w bazie pozycji, dla której nazwa_gracza="Kow", ale nagle napotyka w poleceniu jakiś dziwny ciąg znaków (alski";) i wyrzuca błąd, bo ciągu tego nie rozumie.

 

Aby uniknąć takich sytuacji, należy poprzedzić wrażliwy znak w tym poleceniu znakiem \.

SELECT cos_tam FROM  jakas_baza WHERE nazwa_gracza="Kow\"alski";

Teraz serwer wykona polecenie poprawnie i (może) zwróci odpowiednie dane z tabeli.

 

Są to oczywiście jedynie przykłady pomagające w zrozumieniu całego tego zamieszania.

 

 

Aby pozbyć się problemu, należy przefiltrować nick gracza i wszystkie wrażliwe znaki w nim  zawarte poprzedzić znakiem \. Np:

replace_all(szNickGracza, iDlugoscNicku, "^"", "\^"");

Pytanie, skąd nagle ten daszek ^ ? No tu z kolei trzeba dodatkowo poprzedzić nim znak ", żeby kompilator zrozumiał o co chodzi (sytuacja analogiczna, jak w przypadku polecenia SQL).


Użytkownik _McHappy edytował ten post 19.10.2017 19:20

  • +
  • -
  • 1

#5 Vuko

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:21
Offline

Napisano 22.10.2017 13:43


Aby pozbyć się problemu, należy przefiltrować nick gracza i wszystkie wrażliwe znaki w nim  zawarte poprzedzić znakiem \. Np:

Wow, super, podrzucę rozwiązanie i dam znać czy działa :)

 

Mam nadzieję, że nie popsują bazy ;3 


  • +
  • -
  • 0




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

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