Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] dziwny problem z cookies + geoip
Forum PHP.pl > Forum > PHP
dopelganger
Witajcie
pomóżcie bo zwariuję :[

mam taki kod:

  1. <?php
  2.  
  3. if (!isset($_COOKIE["verlang"])) {
  4.  
  5. require_once 'geoip2/vendor/autoload.php';
  6. use GeoIp2\Database\Reader;
  7.  
  8. $reader = new Reader('/usr/local/geolite/GeoLite2-Country.mmdb');
  9. $record = $reader->country($_SERVER['REMOTE_ADDR']);
  10.  
  11. $codeCountry = $record->country->isoCode;
  12. setcookie("verlang",$codeCountry,time()+(60*60*24*365));
  13. echo $codeCountry;
  14.  
  15. } else {
  16.  
  17. echo 'Dlaczego tego nie wyświetla jak jest ciasteczko?questionmark.gifquestionmark.gif?';
  18.  
  19. }
  20.  
  21. ?>


Nie wyświetla mi treści po } else { a ciasteczko jest bo jak daje echo $_COOKIE ... to pokazuje zawartość ,,,
zgłupiałem , o co kaman questionmark.gifquestionmark.gif?

Jeśli opatrze komentarzami część if else to wyświetli mi PL (czyli skrypt geoip działa OK exclamation.gif!):

  1. // if (!isset($_COOKIE["verlang"])) {
  2.  
  3. ... dalej skrypt geoip
  4.  
  5. /*
  6. } else {
  7. echo 'Dlaczego tego nie wyświetla?questionmark.gifquestionmark.gif?';
  8. }
  9. */


Prosze o pomoc
Pyton_000
przed If daj var_dump($_COOKIE["verlang"]) i pokaż wynik
dopelganger
Cytat(Pyton_000 @ 14.01.2015, 10:38:03 ) *
przed If daj var_dump($_COOKIE["verlang"]) i pokaż wynik


  1. string(2) "PL" PL


z tym, że jak jest skrypt z if to pusta strona, w źródle nic nie ma :/
Pyton_000
daodaj za setcookie

$_COOKIE["verlang"] = $codeCountry;
dopelganger
Cytat(Pyton_000 @ 14.01.2015, 10:58:41 ) *
daodaj za setcookie

$_COOKIE["verlang"] = $codeCountry;


nadal nic,,
pusta strona
Pyton_000
No dobra to wytłumacz jeszcze raz z czym masz problem.
Bo w tej chwili działa to tak(a przynajmniej powinno) że jak wejdziesz na stronę bez ciacha to odpalasz GeoIP i zapisujesz w ciastku dane. Po odświeżeniu strony powinieneś mieć wejście do else
dopelganger
Cytat(Pyton_000 @ 14.01.2015, 11:14:41 ) *
No dobra to wytłumacz jeszcze raz z czym masz problem.
Bo w tej chwili działa to tak(a przynajmniej powinno) że jak wejdziesz na stronę bez ciacha to odpalasz GeoIP i zapisujesz w ciastku dane. Po odświeżeniu strony powinieneś mieć wejście do else



dokladnie, a dla else nie wyświetla :
echo 'Dlaczego tego nie wyświetla jak jest ciasteczko?questionmark.gifquestionmark.gif?';

a ciastko jest :/

w sumie chyba nie działa od początku, jak usune cookies z przeglądarki,,,

if (!isset($_COOKIE["verlang"])) {


generalnie kod z warunkiem if..else nie działa, a jak usune warunek to działa,, (jakiś absurd)
no ale warunek musze mieć


udało mi się to zrobić , zadziałało jak przeniosłem warunek poza dołączane biblioteki: (zamieszczam, gdyby ktoś znalazł się kiedyś w podobnej opresji wink.gif

  1. <?php
  2.  
  3. require_once 'geoip2/vendor/autoload.php';
  4. use GeoIp2\Database\Reader;
  5.  
  6. $reader = new Reader('/usr/local/geolite/GeoLite2-Country.mmdb');
  7. $record = $reader->country($_SERVER['REMOTE_ADDR']);
  8.  
  9. $codeCountry = $record->country->isoCode;
  10.  
  11. if (!isset($_COOKIE["verlang"])) {
  12. setcookie("verlang",$codeCountry,time()+(60*60*24*365));
  13. $_COOKIE["verlang"] = $codeCountry;
  14. echo $codeCountry;
  15.  
  16. } else {
  17.  
  18. echo 'null';
  19.  
  20. }
  21.  
  22. ?>
Pyton_000
Tyle że teraz to jest bez sensu bo pewnie zamiarem miało być żeby nie pobierało za każdym razem danych z API
dopelganger
Cytat(Pyton_000 @ 15.01.2015, 09:17:15 ) *
Tyle że teraz to jest bez sensu bo pewnie zamiarem miało być żeby nie pobierało za każdym razem danych z API


no tak, ale nie wiadomo dlaczego tak się dzieje, na supporcie maxmind nie otrzymałem również pomocy,
(zamiarem było wykrycie skąd user wchodzi i przekierowanie go na odpowiednią wersję językową strony i żeby za kolejnym razem jak wejdzie z innej wersji językowej na stronę nie wyrzucało go jak w pętli, tylko mógł już na niej pozostać)
, poza tym, serwer nie ma żadnych limitów i działa bardzo szybko, nie widzę żadnych spowolnień, więc zdecydowałem sie na ten akt desperacji smile.gif

ps. dla $_SESSION również nie działa
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.