Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Geoip
Forum PHP.pl > Forum > PHP
dopelganger
Witam
korzystam z geoip do wykrywania kraju i przełączania użytkownika na odpowiednią stronę językową.
Skrypt działa dobrze, jednak kiedy użytkownik z zagranicy chce wrócić na stronę matkę (PL - gdzie jest umieszczony skrypt geoip) ciągle go wraca do jego wersji językowej.
Jak to zrobić żeby użytkownik z zagranicy mógł przełączyć się na wersje PL (stronę matkę)?


  1. require_once 'geoip2/vendor/autoload.php';
  2. use GeoIp2\Database\Reader;
  3.  
  4. $reader = new Reader('/usr/local/geolite/GeoIP2-Country.mmdb');
  5. $record = $reader->country($_SERVER['REMOTE_ADDR']);
  6. $codeCountry = $record->country->isoCode;
  7.  
  8. if ($codeCountry == "PL") {
  9. $codeCountry = true; // zostaje na stronie matce czyli PL
  10. } else if ($codeCountry == "DE" || $codeCountry == "AT" || $codeCountry == "CH") {
  11. header('Location: de...');
  12. } else if ($codeCountry == "FR") {
  13. header('Location: fr...');
  14. } else if ($codeCountry == "UK" || $codeCountry == "GB" ) {
  15. header('Location: uk...');
  16. } else if ($codeCountry == "US" || $codeCountry == "USA" ) {
  17. header('Location: us...');
  18. } else {
  19. header('Location: eu...'); // domyślnie jak nie wykryje kraju przerzuca na EU
  20. }
  21.  


Prośba o pomoc.
Pozdrawiam
trueblue
Kierujesz go na język tylko wtedy, kiedy go nie wybrał (język nie przyszedł w $_GET/nie ma w go w URL).
dopelganger
Cytat(trueblue @ 29.11.2016, 13:23:08 ) *
Kierujesz go na język tylko wtedy, kiedy go nie wybrał (język nie przyszedł w $_GET/nie ma w go w URL).


ale to będe musiał mieć w adresie zawsze zmienną $_GET ?
trueblue
Tak.
Zauważ też jak indeksowałby się podstrony w Google, gdyby nie było w adresie zmiennej języka.
dopelganger
Cytat(trueblue @ 29.11.2016, 13:34:18 ) *
Tak.
Zauważ też jak indeksowałby się podstrony w Google, gdyby nie było w adresie zmiennej języka.


a może w $_GET przekazać pl i ustawić ciastko PL, jeśli jest tzn. że ma trzymać na PL.
wtedy pomijam GET, teraz już chyba tego nie przebuduje.
Pyton_000
A nie prościej ustawiać zmienną w sesji i na tej podstawie potem sprawdzać? Jak nie ma to wykryć i ustawić. Potem jeśli ręcznie zmieni to nadpisać.
trueblue
Zaraz, zaraz.
Czy Ty masz dla każdego języka odrębne subdomeny językowe?
dopelganger
Cytat(trueblue @ 29.11.2016, 13:41:06 ) *
Zaraz, zaraz.
Czy Ty masz dla każdego języka odrębne subdomeny językowe?


tak,
w sumie sam sobie odpowiedziałem na pytanie i zrobiłem tak jak napisałem smile.gif
Czyli z innych wersji językowych dodałem do adresu flagi: exampl.com/?lang=pl
tak więc raz tylko użyje $_GET a ciastko będzie go trzymało na tej wersji.

  1. // wyjątek dla PL
  2. if ($_GET["lang"]=='pl') {
  3. setcookie("lang",'PL',time()+(60*60*24*30));
  4. $_COOKIE["lang"] = 'PL';
  5. }
  6.  
  7. if ($codeCountry == "PL" || $_COOKIE["lang"] == 'PL' || $_GET["lang"] == 'pl') {
  8. ... // PL


zamykamy.
trueblue
Jeśli masz subdomeny językowe, to w samej subdomenie masz zawarty język. Niepotrzebna jest zmienna językowa.
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.