Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: IP kraju
Forum PHP.pl > Forum > PHP
Krzysztofem
Witam

chcialbym napisac skrypt ktory wykrywalby z jakiego kraju przychodzi uzytkownik. Robie stronke dla kilku wersju jezykowych (en, de, fr). No i chcialbym, ze jezeli uzytkownik bedzie z innego kraju niz wyzej wymienione, to zaladuje mu sie domyslna wersja jezykowa.

No i pojawia sie problem jak wykryc kraj? Probowalem za pomoca zmiennej $_SERWER ["REMOTE_ADDR"], no ale co gdy nie bedzie nazwy i dostane tylko IP?! Takze to chyba odpada. Moge jeszcze HTTP_ACCEPT_LANGUAGE ale pojawia sie problem. Brat testowal to w Kanadzie. Ma angielskie oprogramowanie, ma ustawiona tylko polska klawiature i jezyk systemie na pl. No i HTTP_ACCEPT_LANGUAGE pokazuje mu "pl". U siebie (mam "polskie oprogramowanie") przestawilem jezyk i klawiature na EN ale tez mi pokazuje "pl".

Sprawdzalem inne posty, ale sa dosyc stare z 2005 i generalnie nie rozwiazuja poroblemu. Nie chcialbym ladwac baz z krajami i dolkejac skrypty.

Prosze o pomoc smile.gif Moze macie jakies pomysly.

ps. co prawda pozostaje jeszcze JavaScript, ale nie moznaby jakos zrobic tego za pomoca php?
wipo
Poszukaj w googlach - jest sporo baz (dość dużych) oferujących prezentacje z jakiego miasta i kraju pochodzi użytkownik, który odwiedza stronę. Dodatkowo możesz znaleźć położenie geograficzne, do pokazania na maps.google.com
Krzysztofem
No ale ja nie chce korzystac z zadnych baz, bo i po co?! Bede mial tylko 3 wersje jezykowe, a dla pozostalych jezykow zaladuje sie domyslna wersja angielska.
wipo
No to musisz sobie zrobić cache ip-ków albo zastosować jakiś program shellowy (ale musisz mieć dostęp do shella i ten program musi być zaistalowany). Jednakże działa on na tej samej zasadzie co powyzej.
Istnieje też możliwość pobierania tych informacji ze stron które udostępniają usługę sprawdzania.
thornag
Niedawno toczylismy o tym dyskusje na ircu, najlepoiej miec dwie tabele jedna z krajami-kodami druga z zasiegami IP-kodami, IPka w postaci integera sluzy do tego funckcja ip2long. Przez to ze zapisujesz tylko zasiegi tych adresow a sam adres jest w postaci liczby calkowitej mozesz osiagnac dobry czas sprawdzania. Jesli potrzebujesz tylko 3-4 jezykow to co za problem umiesic tylko 3-4 zasiegi ?
wipo
To skoro znasz wszystkie klasy adresów to czemu się pytasz?
thornag
@wipo eee chyba sie pomyliles, ja o nic nie pytam tylko sugeruje rozwiazania, ktore swoja droga wydaje mi sie najlepsze (no chyba ze ktos korzysta z jakis azjatyckich proxy tongue.gif)
wipo
A nie prościej robić własny cache a jak nie znajduje adresu w lokalnej bazie (cache) to odpytać stronę taką jak
http://pilzz.ath.cx/geoip/
?
thornag
Nie rozumiem po co sobie komplikowac. Przeciez skoro to maja byc tylko trzy jezyki to nietrudno zdobyc zasiego takich adresow, a pozniej tylko sprawdzasz a poleganie na zewnetrznych serwisach moze sie okazac 'trudne do utrzymania'.

Ewentualnie jest jeszcze rozwiazanie domenowe (takie jak no na php.net), w zaleznie od domeny ktorej klient uzywa wchodzac taki ustawiasz jezyk, ale jak wiadomo nie jest to do konca pewne.
Krzysztofem
thornag a moglbys mi podpowiedziec jak moge sprawdzic zasieg takich adresow i jak to pozniej wykorzystac? smile.gif Jestem poczatkujacy i narazie za bardzo nie rozumiem o czym piszesz smile.gif
thornag
Jest sporo baz na necie typu ip2country, sciagnij sobie taka baze, zapisz sobie ipki tylko interesujacych Cie krajow, zapisz to u siebie w bazie a pozniej sprawdzaj ip.
Krzysztofem
A inaczej tego nie mozna zrobic? tzn. nie korzystac z tego typu baz.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.