Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wielojęzykowość + sesje + ciacho
pedro84
post 28.11.2006, 13:26:27
Post #1





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


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.


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
satsun
post 28.11.2006, 13:50:51
Post #2





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 15.10.2006

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


poprostu tam gdzie dajesz sesje tam daj ciacho, a co do tego to daj tam isset albo @przed zmienna, choc lepiej to pierwsze
Go to the top of the page
+Quote Post
pedro84
post 30.11.2006, 00:14:43
Post #3





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


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:(

Ten post edytował pedro84 28.11.2006, 14:42:58


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
Master Miko
post 30.11.2006, 08:23:51
Post #4





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

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


Musisz to umieścić przed wysyłaniem jakiegokolwiek headera lub treści strony.
Patrz w forum (szukaj) "headers already sent"


--------------------
Go to the top of the page
+Quote Post
pedro84
post 30.11.2006, 13:56:58
Post #5





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Ź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.


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 30.07.2025 - 18:28