Mam pewien problem z sesjami. W php piszę juz jakiś czas, logowanie zrobiłem niejedno,
ale błąd, na który natknąłem się wczoraj najzwyczajniej mnie położył :(
Mam taki kod:
<?php $logged=false; // stan użytkownia (zalogowany/wylogowany) $a=$core->auth->login($_POST['username'],$_POST['userpass']); // loguje if($a) { $logged=true; // zmieniam stan zalogowania } $_SESSION['logged']=$a; // przekazuje ID usera do sesji } ?>
auth::login wygląda tak:
<?php function login($user=NULL,$pass=NULL) { if($user===NULL&&$pass===NULL) { //brak danych logowania - staram się "autologować" $this->logged=$_SESSION['logged']; } else { $this->logged=false; $_SESSION['logged']=false; } } else { // loguje po danych użytkownika $this->logged=$this->core->users->auth($user,$pass); } // ustawiam dane usera $this->core->currentUser=$this->core->users->setCurrentUser($this->logged); return($this->logged); } ?>
I ten kod działa. Problem pojawia się w momencie, kiedy przypisania wartości do $_SESSION chcę przenieść do metody auth::login (bo po co ma to być w kodzie strony, skoro z tego korzysta tylko klasa auth).
Po przeniesieniu kod wygląda tak:
<?php $logged=false; // stan użytkownia (zalogowany/wylogowany) if($core->auth->login($_POST['username'],$_POST['userpass'])) { // loguje $logged=true; // zmieniam stan zalogowania } } ?>
auth::login
<?php function login($user=NULL,$pass=NULL) { if($user===NULL&&$pass===NULL) { //brak danych logowania - staram się "autologować" $this->logged=$_SESSION['logged']; } else { $this->logged=false; $_SESSION['logged']=false; } } else { // loguje po danych użytkownika $this->logged=$this->core->users->auth($user,$pass); $_SESSION['logged']=$this->logged; } // ustawiam dane usera $this->core->currentUser=$this->core->users->setCurrentUser($this->logged); return($this->logged); } ?>
Jednak faktyczna wartość sesji widoczna jest tylko wewnątrz metody. Poza nią - $_SESSION['logged'] przyjmuje wartość 0/1.
Czy ktoś spotkał się z podobnym problemem? Co moze być przyczyną? Jak moznaby to rozwiązać?
Korzystam z php w wersji 4.4.4 (nowy lepszy szatan ;) ).
Z góry dziękuję za pomoc
Pozdrawiam