Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Geoip
dopelganger
post 29.11.2016, 13:14:22
Post #1





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 27.10.2012

Ostrzeżenie: (0%)
-----


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

Ten post edytował dopelganger 29.11.2016, 13:15:54
Go to the top of the page
+Quote Post
trueblue
post 29.11.2016, 13:23:08
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Kierujesz go na język tylko wtedy, kiedy go nie wybrał (język nie przyszedł w $_GET/nie ma w go w URL).


--------------------
Go to the top of the page
+Quote Post
dopelganger
post 29.11.2016, 13:28:49
Post #3





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 27.10.2012

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
trueblue
post 29.11.2016, 13:34:18
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Tak.
Zauważ też jak indeksowałby się podstrony w Google, gdyby nie było w adresie zmiennej języka.


--------------------
Go to the top of the page
+Quote Post
dopelganger
post 29.11.2016, 13:37:09
Post #5





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 27.10.2012

Ostrzeżenie: (0%)
-----


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.

Ten post edytował dopelganger 29.11.2016, 13:37:25
Go to the top of the page
+Quote Post
Pyton_000
post 29.11.2016, 13:39:41
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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ć.
Go to the top of the page
+Quote Post
trueblue
post 29.11.2016, 13:41:06
Post #7





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Zaraz, zaraz.
Czy Ty masz dla każdego języka odrębne subdomeny językowe?


--------------------
Go to the top of the page
+Quote Post
dopelganger
post 29.11.2016, 14:00:14
Post #8





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 27.10.2012

Ostrzeżenie: (0%)
-----


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.

Ten post edytował dopelganger 29.11.2016, 14:02:47
Go to the top of the page
+Quote Post
trueblue
post 29.11.2016, 14:15:30
Post #9





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Jeśli masz subdomeny językowe, to w samej subdomenie masz zawarty język. Niepotrzebna jest zmienna językowa.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 15:48