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

Niestandardowe znaki w URL


Najlepsza odpowiedź _McHappy , 19.05.2017 02:22

Hmmm. GT stosuje kodowanie base64 dla nietypowych nicków, więc też mógłbyś tego spróbować.
Znalazłem inc dla source mod'a, należałoby tylko (a może 'aż') dostosować do amxx.

https://forums.allie...ad.php?t=101764

@Aktualizacja
Dla amxx też jest ten projekt https://forums.allie...t=87252?t=87252 Przejdź do postu


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

#1 Ogen Dogen

    Czempion

  • Power User

Reputacja: 261
Wszechwidzący

  • Postów:837
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Dąbrowa Górnicza
Offline

Napisano 19.05.2017 00:34

Witam, potrzebuje przekazać nicki graczy w zapytaniu HTTP przez sockety a często zawierają nietypowe symbole, które nie wiem jak zakodować.

O ile nie mam problemu z standardowymi znakami typu ampersand, znak zapytania, kropka itp. to gracze bardzo często mają nietypowe symbole spoza standardu ASCII np. ①②③ α в ¢ ∂ є f g н ι к ℓ  ► ▲ ▪ ▫ © ® ¤ ∆ ◊ ∞ √ £ • ≈ ◊ ▫ □ ∏ ۩ ۞

Czy jest w ogóle możliwe zakodowanie i przekazanie tego typu symboli przez HTTP w AMXX ? Jeżeli nie, to jak się zabezpieczyć przed tym ? Sprawdzenie wartości ASCII wystarczy ?


  • +
  • -
  • 0

b_350_20_360204_C20008_FFFFFF_000000.png 193.33.176.115:27015

 

94e23d811c.png

 


#2 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

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

Napisano 19.05.2017 02:22   Najlepsza odpowiedź

Hmmm. GT stosuje kodowanie base64 dla nietypowych nicków, więc też mógłbyś tego spróbować.
Znalazłem inc dla source mod'a, należałoby tylko (a może 'aż') dostosować do amxx.

https://forums.allie...ad.php?t=101764

@Aktualizacja
Dla amxx też jest ten projekt https://forums.allie...t=87252?t=87252

Użytkownik _McHappy edytował ten post 19.05.2017 02:26

  • +
  • -
  • 1

#3 Ogen Dogen

    Czempion

  • Autor tematu
  • Power User

Reputacja: 261
Wszechwidzący

  • Postów:837
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Dąbrowa Górnicza
Offline

Napisano 19.05.2017 15:41

Hmmm. GT stosuje kodowanie base64 dla nietypowych nicków, więc też mógłbyś tego spróbować.
Znalazłem inc dla source mod'a, należałoby tylko (a może 'aż') dostosować do amxx.

https://forums.allie...ad.php?t=101764

@Aktualizacja
Dla amxx też jest ten projekt https://forums.allie...t=87252?t=87252

Dzięki, nie pomyślałem o innym kodowaniu :D Przetestuje i dam znać.

 

//edit Informacja dla potomnych

Aby w pełni poprawnie przekazywać nicki przez URL należy najpierw zakodować go w base64 za pomocą tej funkcji - https://forums.allie...210&postcount=4

Następnie w zakodowanym stringu base64 należy zakodować inne symbole, które są nielegalne w zapytaniach HTTP np. znak równości, który często pojawia się na końcu.

Do tego napisałem taką funkcję:

public url_encode(str[], len)
{
	replace_all(str, len, "%", "%25"); // to musi byc na samym poczatku!
	
	replace_all(str, len, " ", "%20"); // lub +
	replace_all(str, len, ".", "%2E");
	replace_all(str, len, "'", "%27");
	replace_all(str, len, "$", "%24");
	replace_all(str, len, "&", "%26");
	replace_all(str, len, "+", "%2B");
	replace_all(str, len, ",", "%2C");
	replace_all(str, len, "/", "%2F");
	replace_all(str, len, ":", "%3A");
	replace_all(str, len, ";", "%3B");
	replace_all(str, len, "=", "%3D");
	replace_all(str, len, "?", "%3F");
	replace_all(str, len, "@", "%40");
	replace_all(str, len, "^"", "%22");
	replace_all(str, len, "<", "%3C");
	replace_all(str, len, ">", "%3E");
	replace_all(str, len, "#", "%23");
	replace_all(str, len, "{", "%7B");
	replace_all(str, len, "}", "%7D");
	replace_all(str, len, "|", "%7C");
	replace_all(str, len, "~", "%7E");
	replace_all(str, len, "[", "%5B");
	replace_all(str, len, "]", "%5D");
	replace_all(str, len, "`", "%60");
}

Na serwerze należy wykonać operację odwrotną: (przykład w PHP)

urldecode(base64_decode($_GET["nick"]));

  • +
  • -
  • 0

b_350_20_360204_C20008_FFFFFF_000000.png 193.33.176.115:27015

 

94e23d811c.png

 





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

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