Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Brak kontroli sesji
Forum PHP.pl > Forum > PHP
servs
Witam,
Napisałem sobie taki skrypt do obsługi języków:

  1.  
  2. include_once('config/config.php');
  3.  
  4. if(!empty($_GET['lang'])) {
  5. $_SESSION['lang'] = $_GET['lang'];
  6. }
  7.  
  8. require_once('lang/class.php');
  9. $lng = new lang();
  10. $lng->lang = $_SESSION['lang'];
  11. $lng->Start();


plik config/config.php
  1. $live_cookie = 3600;
  2. $name_domain = 'http://domena.pl';
  3.  
  4. $time = time() + $live_cookie;
  5. $_SESSION['live'] = $time;
  6. setcookie('p43','yes',$time,'/',$name_domain);


Wciskam przycisk flagi niemieckiej, działa pięknie, wybieram cokolwiek z menu i... Znów wchodzi mi język polski.
Niestety wygląda na to, że pomimo braku wartości $_GET['lang'], zmienna $_SESSION['lang'] staje się pusta. Dlaczego? Myślę nad tym od dwóch dni i nic nie mogę wymyśleć.

Plik lang/class.php został zbudowany tak, żeby nawet nie wybierając żadnego języka (gdy $_SESSION['lang'] jest pusta) załadują się zmienne języka polskiego.
  1. class lang {
  2.  
  3. public function __set($nazwa, $wartosc)
  4. {
  5. $this->$nazwa = $wartosc;
  6. }
  7.  
  8. public $lng;
  9.  
  10. public function Start()
  11. {
  12. include_once('pl.php');
  13. $pl = $lng;
  14. $a = file_exists($_SERVER["DOCUMENT_ROOT"].'/lang/'.$this->lang.'.php');
  15. if(!$a){
  16. $abc = $pl;
  17. } else {
  18. include_once($this->lang.'.php');
  19. $ln = $lng;
  20. $abc = array_merge($pl, $ln);
  21. }
  22. $this->lng = $abc;
  23. // echo $_SERVER["DOCUMENT_ROOT"].'/lang/'.$this->lang.'.php';
  24. }
  25.  
  26.  
  27.  
  28. }


Będę wdzięczny za jakąkolwiek pomoc.

Pozdrawiam.
tehaha
sprawdź czy bez ob_start(); będzie działać, a jak nie to zobacz czy nie zmienia się przypadkiem ID sesji pomiędzy rządaniami
servs
Wyrzucenie ob_start nic nie dało.
A id sesji jest cały czas takie samo.
Niktoś
A spróbój zmienić kolejność:
  1. $lng->lang = $_SESSION['lang'];
  2. $lng->Start();


na
  1. $lng->Start();
  2. $lng->lang = $_SESSION['lang'];


Wydaje mi się,że poprzez funkcje Start() ustawienia są po prostu resetowane.
servs
Sorry za tak późną odpowiedź.
Sprawę rozwiązałem.
Były zbyt ogólnie ustawione wyrażenia regularne w mod_rewrite i $_GET['lang'] chwytał złe wartości.

W każdym razie dzięki za próbę pomocy.

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