Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dziwny problem z include, sesjami i echo
Cod
post
Post #1





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 20.03.2003
Skąd: Warszawa

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


Nieczęsto proszę kogoś na forum o pomoc, bo zawsze staram się rozwiązywać problemy sam. Z tym jednak nie mogę sobie poradzić. Nie mam zupełnie pojęcia o co chodzi.

Zacząłem tworzyć stronę, która będzie dostępna w kilku językach. Gość już na stronie głównej może wybrać sobie, w jakim języku witryna ma być wyświetlana. Klikając w odpowiedni link, tworzy zmienną $HTTP_SESSION_VARS["lang"], zawierającą wiadomość, o tym, jaki gość wybrał język. W skrypcie strony, na samym początku sprawdzane jest, czy zmienna istnieje. Jeśli nie, to przypisana jest jej wartość języka angielskiego. Następnie includowany jest plik, zawierający deklarację tablicy $lang, w której pod odpowiednimi indeksami zawarte będą przetłumaczone na dany język teksty.

To tyle tytułem wstępu. Poniżej wklejam fragment kodu, który ma wyświetlić różne tytuły dla różnych języków:

header.php
  1. <?php
  2. if(isset($HTTP_GET_VARS[&#092;"lang\"])) $HTTP_SESSION_VARS[\"lang\"]=$HTTP_GET_VARS[\"lang\"];
  3. else $HTTP_SESSION_VARS[&#092;"lang\"]=\"english\";
  4. $langdir=&#092;"lang/\".$HTTP_SESSION_VARS[\"lang\"].\"/lang_main.php\";
  5. include($langdir);
  6. // .....
  7. echo &#092;"<title>footbagnews.com :: \".$lang[\"title\"].\"</title>\";
  8. ?>


lang/polski/lang_main.php
  1. <?php
  2. $lang[&#092;"title\"]=\"zo&para;ka, footbag, newsy, informacje, wydarzenia, triki, gracze, filmy\";
  3. ?>


lang/english/lang_main.php
  1. <?php
  2. $lang[&#092;"title\"]=\"footbag, hacky sack, news, events, tricks, moves, players, videos\";
  3. ?>


Przy pierwszym uruchomieniu strony, kiedy jeszcze sesja nie jest ustawiona, skrypt działa poprawnie i wyświetla angielski tekst tytułu. Kiedy jednak ktoś kliknie w link jakiegoś języka, wyświetlana jest tylko pierwsza litera tekstu z zaincludowanej zmiennej. Nie mam pojęcia, o co w tym chodzi.

Głupi problem i zapewne prosty w rozwiązaniu, ale nie pozwala mi się ruszyć dalej. Proszę o pomoc.

Link do tej stronki: http://www.footbag.p2.pl/footbagnews
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
DeyV
post
Post #2





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




Nie wchodząc w problem odczytywania tablicy lang, wydaje mi się, że sam mechanizm przehowywania języka jest błędny.
  1. <? if(isset($HTTP_GET_VARS[&#092;"lang\"])) $HTTP_SESSION_VARS[\"lang\"]=$HTTP_GET_VARS[\"lang\"];
  2. else $HTTP_SESSION_VARS[&#092;"lang\"]=\"english\"; ?>

W ten sposób nigdyy nie sprawdzasz, czy czasem już nie jest w sesji informacja na temat języka.

Ja to robię zazwyczaj tak:
1. sprawdzam czy jest info o języku w get
2. jeśli 1 tak, sprawdzam czy istnieje taki język
3. jeśli 2 tak - zapisuje do sesji
4. jeśli 1 nie - sprawdzam czy jest język w sesji
5. jeśli 4 nie - przypisuje domyślny język do sesji
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 13.10.2025 - 15:10