Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Język z przeglądarki na sesji
Forum PHP.pl > Forum > PHP
Gothicbezimienny
Chce aby można było pobrać język ustawiony w przeglądarce i na jego podstawie ustawić język strony. Problem mam w tym ze przy pierwszym uruchomieniu przeglądarki dzięki sesji ładnie się to uruchamia, natomiast gdy otworze nową zakładkę i uruchamiam tą stronę on najwyraźniej nadal ma sesje i już nie wchodzi do mojego ifa i nie sprawdza już tego języka, może ktoś powiedzieć jak powinienem to prawidłowo zrobić.

  1.  
  2.  
  3.  
  4.  
  5. //load config file
  6. @require_once( './config.php' );
  7.  
  8. if (!isset($_SESSION['lang'])){
  9.  
  10. $_SESSION['lang'] = 0;
  11.  
  12.  
  13. if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
  14. $str = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
  15.  
  16.  
  17. if($str == "de"){
  18. exit();
  19. }else if($str == "ru"){
  20. exit();
  21. }else if($str == "en"){
  22. exit();
  23. }else if($str == "en-gb"){
  24. exit();
  25. }else if($str == "en-us"){
  26. exit();
  27. }
  28. else{
  29. header("Location: http://xxx.com"); // domyslna strona po pl
  30. exit();
  31. }
  32.  
  33. $_SESSION['lang']++;
  34. }
nospor
No tak, sesja jak to sesja, trwa...

Co ty chcesz osiagnac przez zwiekszanie lang w session o 1?
Gothicbezimienny
Nic właściwe mi nie powiedziałeś konstruktywnego. Aktualnie nie ma zastosowania ta inkrementacja, to pozostałości po próbach wymyślenia jakiegoś sposobu o to co pytam.

No i dalej szuakm odp. na moje pytanie czy da się jakoś to zrobić?
nospor
Nadal nie napisales co chcesz zrobic wiec niby jak mialem ci napisac cos madrego? Napisalem: 'Co cchesz osiagnac' a ty nie odpowiedziales na to pytanie...

Wywal tego ifa i po sprawie skoro do niczego ci nie jest potrzebny
NickOver
Po 1 skoro robisz substringa który zostawi Ci 2 elementy to po co są te ify:?
  1. }else if($str == "en-gb"){
  2. header("Location: <a href="http://xxx.com/home_en.html&quot%3b%29;" target="_blank">http://xxx.com/home_en.html");</a>
  3. exit();
  4. }else if($str == "en-us"){
  5. header("Location: <a href="http://xxx.com/home_en.html&quot%3b%29;" target="_blank">http://xxx.com/home_en.html");</a>
  6. exit();
  7. }

Po 2 nie lepiej zamiase ifów i elsów zrobić switcha?

Po 3 taki jest mechanizm sesji. To jest jej główne zadanie. Zostać ile chcesz. Jeśli i tak chcesz sprawdzać język co wejście na stronę (co jest jedną z najbardziej bezsensownych rzeczy jakie dziś widziałem ponieważ user raczej nie zmienia języka przeglądarki to nie używaj do tego sesji tylko po prostu sprawdzaj język i wyświetlaj treści w danym języku.

Po 4 jeśli chcesz pomocy odpowiadaj na pytania innych. Większość osób które będą chciały Ci pomóc zarabia na znajomości tego języka i ma w nim większe doświadczenie przez co mogą Ci podpowiedzieć coś o czym nawet byś nie pomyślał.
Gothicbezimienny
nospor :


Cytat
Nadal nie napisales co chcesz zrobic wiec niby jak mialem ci napisac cos madrego? Napisalem: 'Co cchesz osiagnac' a ty nie odpowiedziales na to pytanie...

Wywal tego ifa i po sprawie skoro do niczego ci nie jest potrzebny


1. Napisałeś dokładnie tak:

Cytat
No tak, sesja jak to sesja, trwa...

Co ty chcesz osiagnac przez zwiekszanie lang w session o 1?


a ja odpowiedziałem więc skąd ta pretensja:

Cytat
Aktualnie nie ma zastosowania ta inkrementacja, to pozostałości po próbach wymyślenia jakiegoś sposobu o to co pytam.


A co che ogólnie osiągnąć napisałem w pierwszym poście, czy napisałem to w sposób nie zrozumiały ?snitch.gif

Napiszę jeszcze raz, chciałbym znaleźć sposób na to by nie tylko za pierwszym uruchomieniem strony sprawdzany był język, ofc nie chodzi mi o ciągłe sprawdzanie bo w tedy się strona zapętli, ale chodzi np. włączam 1 zakłądke z XYZ.com moja pentla eleganco sprawdza język i ustawia też taki język strony. Natomiast jak otworze drugą zakładkę też z XYZ.com użyta przezemnie w ten sposób sesja już nie pozwala na wejście do if, natomiast innego pomysłu nie wymyśliłem i tu pytanie czy ktoś miałby pomysł aby nawet po otwarciu nowej zakładki język był sprawdzany znów.


NickOver :

1. słuszna uwaga smile.gif

2.
Cytat
Po 2 nie lepiej zamiase ifów i elsów zrobić switcha?
Mam wersje z casami ale właśnie mi wydaje się lepsza opcja z ifami mogę się mylić ale to bardzo podobna struktura do tej z ifami wiec to żaden problem. I nie chodzi mi o sprawdzanie języka co wejście na stronę bo to porostu by zapętlało przekierowania na stronie tylko j.w.


3. Wiem jaki jest mechanizm sesji i dlatego napisałem ten post z prośbą o pomoc w wymyśleniu lepszego sposobu niż ja zdołałem o ile jakiś sensowy istnieje. I wiem że to sprawdzanie, szczególnie w różnych przypadkach może być bezsensowne ale powiem tak klient czasem ślepo czegoś chce. Przy użyciu samych pętli switch/if przekierowania się zapętlają ponieważ każde otwarcie strony przechodzi pętle, zmienna sesyjna pozwala mi na jako takie prawidłowe działanie tego.


4. Właśnie tak zrobiłem odpowiedziałem. I właśnie dlatego napisałem na forum bo sam nie umiem lepiej wymyślić i może ktoś pomoże bardziej doświadczony.
nospor
Cytat
Napiszę jeszcze raz, chciałbym znaleźć sposób na to by nie tylko za pierwszym uruchomieniem strony sprawdzany był język, ofc nie chodzi mi o ciągłe sprawdzanie bo w tedy się strona zapętli, ale chodzi np. włączam 1 zakłądke z XYZ.com moja pentla eleganco sprawdza język i ustawia też taki język strony. Natomiast jak otworze drugą zakładkę też z XYZ.com użyta przezemnie w ten sposób sesja już nie pozwala na wejście do if, natomiast innego pomysłu nie wymyśliłem i tu pytanie czy ktoś miałby pomysł aby nawet po otwarciu nowej zakładki język był sprawdzany znów.
Motasz sie w zeznaniach i podajesz sprzeczne rzeczy jakie chcesz zrobic...
Raz piszesz ze chcesz za kazdym razem a potem ze jednak nie, tylko gdy przelaczysz na inna zakladke. A wiec info dla ciebie: sesja nie wie czy ty sie przelaczasz na inna zakladke czy nie. sesja to sesja i dziala w obrebie tej samej przegladarki.

W ogole zabierasz sie do tego od zlej strony. Jezyka nie powinno sie zapisywac w sesji na podstawie jakis tam dziwnych ustawien. Jezyk powinien byl w adresie url i z niego odczytywany i koniec kropka.
Czyli jak masz strone powiedzmy xyz.pl to zakladamy ze domyslnym jezykiem jest PL i tego uzywasz.
Ale jak ktos wpisze xyz.pl/en/ lub en.xyz.pl to znaczy ze ten ktos przechodzic na jezyk EN. Analogicznie inne jezyki.
I na stronie jak tworzysz linki w tresci strony to one maja zawierac info o jezyku w jakim aktualnie czlowiek sie znajduje.
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.