Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przekazywanie sesji do obiektu
Forum PHP.pl > Forum > PHP > Object-oriented programming
Mefiuu
Witam. Mam problem. Otóż na jednej stronie użytkownik się loguje. Jeśli się zaloguje poprawnie to $_SESSION['logged'] = 1. Stworzyłem klasę do uploadu plików i chciałem w niej zawrzeć metodę do sprawdzania uprawnień, tzn. czy $_SESSION['logged'] == 1. To właśnie jako parametr przekazuję wartość $_SESSION. Metoda wygląda mniej więcej tak :

  1. public function checkRights($level) {
  2. $this->level = $level;
  3. if ($this->level != 1) return false;
  4. }
  5.  


przekazuję tak :

  1.  
  2. if (!$upload->checkRights($_SESSION['logged'])) echo "nieudane logowanie";
  3.  


I to właśnie nie działa. Wywala mi że nie udało się zalogować, ale wartość wynosi 1. Czemu ?
Ilware
robisz negacje z nulla nie wiem czy to coś nie knoci, spróbuj zwrócić true w funkcji
skowron-line
  1. if ($upload->checkRights($_SESSION['logged']) == false) echo "nieudane logowanie";
Mefiuu
Cytat(skowron-line @ 18.08.2011, 19:44:11 ) *
  1. if ($upload->checkRights($_SESSION['logged']) == false) echo "nieudane logowanie";



niestety, nadal nieudane logowanie. Ale kiedy wyświetlę wartość w metodzie to pokazuje mi 1.
mortus
Jak zauważył Ilware, funkcja nie zwraca żadnej wartości w momencie, gdy uprawnienia się zgadzają. Stąd problem. Nie wiem, czy aż tak ciężko zinterpretować zdanie:
Cytat
robisz negacje z nulla nie wiem czy to coś nie knoci, spróbuj zwrócić true w funkcji

Moja interpretacja:
  1. public function checkRights($level) {
  2. $this->level = $level;
  3. if ($this->level != 1) return false;
  4. return true;
  5. }
Mefiuu
Cytat(mortus @ 18.08.2011, 21:50:05 ) *
Jak zauważył Ilware, funkcja nie zwraca żadnej wartości w momencie, gdy uprawnienia się zgadzają. Stąd problem. Nie wiem, czy aż tak ciężko zinterpretować zdanie:
Moja interpretacja:
  1. public function checkRights($level) {
  2. $this->level = $level;
  3. if ($this->level != 1) return false;
  4. return true;
  5. }



ech... rzeczywiście, mój błąd, po prostu nie doczytałem postu Ilware'a. Takie rzeczy też się zdarzają. Niemniej jednak kod działa, dziękuję za pomoc.
mortus
Gdyby nie fakt, że podczas porównywania za pomocą dwóch znaków równości dochodzi do rzutowania typów zmiennych i NULL zamieniane jest na false, to i kod użytkownika skowron-line by zadziałał. Natomiast można porównać dwie zmienne sprawdzając przy okazji zgodność ich typów (używamy do tego trzech znaków równości) i wówczas osiągamy oczekiwany rezultat.
  1. if ($upload->checkRights($_SESSION['logged']) === false) echo "nieudane logowanie";

Jednak skoro funkcja coś zwraca, to i powinna zwracać jakąś domyślną wartość (w tym przypadku true).

EDIT
Ale to tylko taka istotna ciekawostka.
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.