Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wielojęzykowość + sesje + ciacho
Forum PHP.pl > Forum > Przedszkole
pedro84
Witam!

Mam stronę językową, zrobioną w taki sposób:

index.php
  1. <?php
  2. require_once("langman.php");
  3. if(!SelectLanguage($_SESSION["lang"]))
  4. die("Error selecting language!");
  5. ?>



langman.php
  1. <?php
  2. $language = array();
  3.  
  4. function SelectLanguage($strLang)
  5. {
  6. global $language;
  7.  
  8. $inc = "en";
  9. switch(stripslashes($strLang))
  10. {
  11. case "de":
  12. $inc = "de";
  13. break;
  14.  
  15. case "en":
  16. $inc = "en";
  17. break;
  18.  
  19. case "pl":
  20. $inc = "pl";
  21. break;
  22.  
  23. default:
  24. $inc = "en";
  25. }
  26.  
  27.  
  28. include_once("languages/" . $inc . ".inc");
  29. if(isset($lang))
  30. {
  31. $language = $lang;
  32. return true;
  33. }
  34.  
  35. return false;
  36. }
  37.  
  38.  
  39.  
  40. ?>


setlang.php
  1. <?php
  2. $strLang = $_GET["lang"];
  3. $_SESSION["lang"] = stripslashes($strLang);
  4. header("Location: index.php"); //** redirect to where u want...
  5. ?>



Pytanie, jak dodać do tego wszystkiego ciacho, żeby system wysyłał ciacho i potem pobierał z niego informacje i języku danego odzwiedzającego?
Przy pierwszym wejściu na stronę pojawia się taki komunikat:
  1. <?php
  2. Notice: Undefined index: lang in c:easyphp1-8wwwindex.php on line 4
  3. ?>


Pozdrawiam
A.
satsun
poprostu tam gdzie dajesz sesje tam daj ciacho, a co do tego to daj tam isset albo @przed zmienna, choc lepiej to pierwsze
pedro84
Niestety nic mi to nie dało. Próbowałem już w ten sposób:

  1. <?php
  2. setcookie ("lang", $lang);
  3. ?>


Wywala coś takiego

  1. <?php
  2. Notice: Undefined variable: lang in c:easyphp1-8wwwindex.php on line 3
  3.  
  4. Warning: Cannot modify header information - headers already sent by (output started at c:easyphp1-8wwwindex.php:3) in c:easyphp1-8wwwindex.php on line 3
  5.  
  6. Notice: Undefined index: lang in c:easyphp1-8wwwindex.php on line 5
  7. ?>


Hmm. Ale jak zrobić to poprzez isset? Próbowałem na setki, nieudanych, sposobów. Isset ma być w pliku index.php czy setlang.php? Ehh coś mi nie idzie:(
Master Miko
Musisz to umieścić przed wysyłaniem jakiegokolwiek headera lub treści strony.
Patrz w forum (szukaj) "headers already sent"
pedro84
Źle to ująłem. Teraz nie ma już tego błędu. Jest ok. Ale:
1. ciacho sie nie zapisuje
2. ew. ciacho się zapisuje, ale po wygaśnięciu sesji nie działa

Metodą dedukcji doszedłem, do takich wniosków.
Skoro plik setlang php odpowiada za zmianę /wybór języków to perzywybraniu zmianie, powinien on wysyłać ciacho. Potem sprawdzać isset'em, jeśli cioacho jest - pobierz z niego lang, jeśli nie ma? wyślij. Tylko do tego umiejętności brak:(

Pop[rawcie mnie jeśli się mylę:)

  1. <?php
  2. $Month = 2592000 + time();
  3. //this adds 30 days to the current time
  4. setcookie(lang, $lang, $Month);
  5. if(isset($_COOKIE['lang']))
  6. {
  7. $lang = $_COOKIE['lang'];
  8. }
  9. else
  10. {
  11. setcookie(lang, $_GET['lang'], $Month);
  12. }
  13. $strLang = $_GET["lang"];
  14. $_SESSION["lang"] = stripslashes($strLang);
  15. header("Location: index.php"); //** redirect to where u want...
  16. ?>


Zmodyfikowałem plik setlang.php w taki sposób. Ciasteczko się wysyła, problem teraz mam z tym, aby po wejściu na stronę, został załadowany język zawarty w tym ciachu.
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.