Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] COOKIE
Forum PHP.pl > Forum > Przedszkole
Krisu
Napisałem skrypt, który sprawdza język przeglądarki i wybiera automatycznie język strony:

  1. <?php
  2. $language_user = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
  3. if (strstr($language_user[0], 'en')) { header ('location:./en'); }
  4. else if (strstr($language_user[0], 'de')) { header ('location:./de'); }
  5. else if (strstr($language_user[0], 'pl')) { header ('location:./pl'); }
  6. ?>


Jednak chciałem rozbudować go o możliwość zapamiętania preferencji. Chciałbym by użytkownik miał możliwość wyboru własnego języka i zapamiętania go w cookie. Wybierając język użytkownik zostaje przekierowany na stronę w postaci domena/jezyk gdzie zostaje ustawione ciasteczko:

  1. <?php
  2. setcookie('language', 'en', time() + 60*60*24*365);
  3. echo $_COOKIE['language'];
  4. ?>


Wszystko do tego momentu działa, ale gdy próbuję połączyć oba skrypty:

index.php
  1. <?php
  2. if (!isset($_COOKIE['language'])) {
  3.  
  4.    $language_user = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
  5.  
  6.        if (strstr($language_user[0], 'en')) { header ('location:./en'); }
  7.  
  8.        else if (strstr($language_user[0], 'de')) { header ('location:./de'); }
  9.  
  10.        else if (strstr($language_user[0], 'pl')) { header ('location:./pl'); }
  11.  
  12. } else header ('location:./'.$_COOKIE['language']);
  13. ?>


Problem pojawia się, w tym, że próbuje odebrać cookie na innej stronie niż ta, na której je ustawiłem. I po mimo istnienia ciasteczka, nie jest ono widziane.

Szukałem informacji na ten temat w internecie, ale nie zauważyłem wzmianki o tym, by nie można było odczytywać cookie z innej strony niż ta na której je ustawialiśmy. W jaki sposób mogę sobie poradzić z tym problemem?
nitek
ciastka nie możesz odczytać z innej domeny. Może robisz przekierowanie z domena.pl na www.domena.pl - tu, o ile sie nie myle, już chyba może być problem..
Krisu
Właśnie problem polega na tym, że jest to ciągle ta sama domena, a skrypt testuje na localhost aktualnie. Dlatego nie bardzo rozumiem, to dlaczego nie chce działać :/
erix
Cytat
Wszystko do tego momentu działa, ale gdy próbuję połączyć oba skrypty:

Działa? A cookie jest wysyłane przez przeglądarke, przy następnym żądaniu. winksmiley.jpg

Cytat
Wybierając język użytkownik zostaje przekierowany na stronę w postaci domena/jezyk gdzie zostaje ustawione ciasteczko:

Masz parametr domain, który ustawiasz na / (root), co sprawi, że ciacho będzie dostępne w ramach wszystkich podkatalogów.
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.