Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] sesja a wyłączone cookie
Forum PHP.pl > Forum > PHP
Dynuel
Chcę na stronie zrobić wybór języka.
Gdy użytkownik wejdzie na strone skrypt sprawdzi czy istnieje cookie z zapamietanym wyborem i go wczyta.
Lecz gdy użytkownik trafi na nią pierwszy raz i cookie nie będzie, skrypt automatycznie sprawdzi jezyk przeglądarki i ustawi na taki, a w razie jakichś problemów ustawi domyślny.
A gdy ten język nie będzie odpowiadał użytkownikowi, to zmieni on sobie go na jakiś inny a wybór zostanie zapisany do cookie. I z każdą następną stroną skrypt będzie odpalał sie on nowa.

Tylko co jeżeli użytkownik ma wyłączone cookie questionmark.gif?

Wybór/zmiana języka dokonana przez użytkownika nie będzie nigdzie zapamiętywana, co będzie wkużające.
W takim razie na wszelki wypadek (tak od razu, no chyba ze da sie jakoś sprawdzić czy przeglądarka akceptuje cookie) powinienem ustawiać sesję z dokonanym wyborem, by był on zapisywany przynajmniej na czas wizyty gościa.

czyli domyślnie mam od razu tworzyć sesję i ustawiać cookie? zgadza sie?
chcę sie dowiedzieć czy dobrze rozumuję i czy jest to prawidłowe, co wy o tym sądzidzie gdyż ja sie za bardzo nie znam
jarrod
zapoznaj się ze zmienną
  1. <?php
  2. $_SERVER['HTTP_ACCEPT_LANGUAGE']
  3. ?>

Jeśli nie masz cookie to przesyłaj info o języku poprzez $_GET
Dynuel
jarrod - nie nie, tutaj chodzi zupełnie nie o to, ja wiem jak napisać ten cały skrypt, a również przekazywanie wyboru języka w GET jest ... nie sam nie wiem jakie jest, gdyż nie rozumiem jak Ty chciałbyś go w nim przesyłąć? mam go podawać we wszystkich linkach na stronie czy jak bo nie kapuje.
bynajmniej to nie problem bo robił bym to w sesji.

mi chodzi tylko o dowiedzenie sie czy takie postepowanie jest poprawne

1. użytkownik dokonuje wyboru języka
2. wybór zostaje przechowywany w cookie, lecz gdyby cookie były wyłączone, również zostaje wybór zapisany w sesji, tak aby działał podczas tej wizyty użytkownika

no bo również moge zapamietywać wybór tylko w cookie, ale jezeli uzytkownik będzie miał je wyłączone, to będzie mu sie ciagle wyświetlał domyślny jezyk, tak wiec trzeba sie jakos zabezpieczyć odpalając sesje, czyz nie?

chodzi mi o to czy dobrze robie od razu na wstepie dublując przechowywane dane w cookie i w sesji

kurda, chyba az tak bardzo nie zamotałem co?
jarrod
Identyfikator sesji przechowywany jest w cookie albo przesyłany metodą $_GET ale jest to odradzane ze względów bezpieczeństwa.
Ja tak w swoim systemie zrobiłem, że jak nie mam jak przechować informacji o języku to przesyłam getem (mam maskowanie URLa). Tyle, że ja zrobiłem tak, że wszystkie linki są tworzone poprzez funkcję systemową. Więc wystarczy zmienić tą funkcję i cała konstrukcja linków się zmienia.
Np.: /pl/start.html
albo /en/strona/zmienna/inna_zmienna.html

Później trzeba napisać funkcję która to odczytuje i wstawia do odpowiedniej zmiennej która de facto zastępuję ci zmienną $_GET. Ale to rozwiązanie do zastosowania przy budowie nowego systemu. Trochę roboty na początku a później wielkie ułatwienie.
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.