Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][sesje] problem z przekazaniem wartości
MiB
post 30.08.2006, 11:11:38
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 30.08.2006
Skąd: Kraków

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


Witam!

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:


  1. <?php
  2. $logged=false; // stan użytkownia (zalogowany/wylogowany)
  3. if(isset($_POST['username'])&&isset($_POST['userpass'])) { // sprawdzam, czy jest żądanie logowania
  4. $a=$core->auth->login($_POST['username'],$_POST['userpass']); // loguje
  5. if($a) {
  6. $logged=true; // zmieniam stan zalogowania
  7. }
  8. $_SESSION['logged']=$a; // przekazuje ID usera do sesji
  9. }
  10. ?>


auth::login wygląda tak:
  1. <?php
  2. function login($user=NULL,$pass=NULL) {
  3. if($user===NULL&&$pass===NULL) { //brak danych logowania - staram się "autologować"
  4. if(isset($_SESSION['logged'])) {
  5. $this->logged=$_SESSION['logged'];
  6. } else {
  7. $this->logged=false;
  8. $_SESSION['logged']=false;
  9. }
  10. } else { // loguje po danych użytkownika
  11. $this->logged=$this->core->users->auth($user,$pass);
  12. }
  13. // ustawiam dane usera
  14. $this->core->currentUser=$this->core->users->setCurrentUser($this->logged);
  15. return($this->logged);
  16. }
  17. ?>


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:

  1. <?php
  2. $logged=false; // stan użytkownia (zalogowany/wylogowany)
  3. if(isset($_POST['username'])&&isset($_POST['userpass'])) { // sprawdzam, czy jest żądanie logowania
  4. if($core->auth->login($_POST['username'],$_POST['userpass'])) { // loguje
  5. $logged=true; // zmieniam stan zalogowania
  6. }
  7. }
  8. ?>


auth::login
  1. <?php
  2. function login($user=NULL,$pass=NULL) {
  3. if($user===NULL&&$pass===NULL) { //brak danych logowania - staram się "autologować"
  4. if(isset($_SESSION['logged'])) {
  5. $this->logged=$_SESSION['logged'];
  6. } else {
  7. $this->logged=false;
  8. $_SESSION['logged']=false;
  9. }
  10. } else { // loguje po danych użytkownika
  11. $this->logged=$this->core->users->auth($user,$pass);
  12. $_SESSION['logged']=$this->logged;
  13. }
  14. // ustawiam dane usera
  15. $this->core->currentUser=$this->core->users->setCurrentUser($this->logged);
  16. return($this->logged);
  17. }
  18. ?>


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
nospor
post 30.08.2006, 11:14:58
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




jak na moj skromny gust to masz ustawione register_globals na on, i zmienna $logged nadpisuje ci sesje $_SESSION['logged']
ale moge sie mylic bo kodu za bardzo nie analizowalem smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 24.07.2025 - 15:42