Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Przekazywanie sesji do obiektu
Mefiuu
post 18.08.2011, 17:57:39
Post #1





Grupa: Zarejestrowani
Postów: 371
Pomógł: 18
Dołączył: 23.11.2008

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


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 ?
Go to the top of the page
+Quote Post
Ilware
post 18.08.2011, 18:31:30
Post #2





Grupa: Zarejestrowani
Postów: 248
Pomógł: 31
Dołączył: 14.12.2010
Skąd: Wrocław

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


robisz negacje z nulla nie wiem czy to coś nie knoci, spróbuj zwrócić true w funkcji


--------------------
Jeżeli pomogłem kliknij "Pomógł" :)
Go to the top of the page
+Quote Post
skowron-line
post 18.08.2011, 18:44:11
Post #3





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


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


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
Mefiuu
post 18.08.2011, 19:15:52
Post #4





Grupa: Zarejestrowani
Postów: 371
Pomógł: 18
Dołączył: 23.11.2008

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


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.
Go to the top of the page
+Quote Post
mortus
post 18.08.2011, 20:50:05
Post #5





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


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. }
Go to the top of the page
+Quote Post
Mefiuu
post 18.08.2011, 20:53:05
Post #6





Grupa: Zarejestrowani
Postów: 371
Pomógł: 18
Dołączył: 23.11.2008

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


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.
Go to the top of the page
+Quote Post
mortus
post 18.08.2011, 21:10:24
Post #7





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


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.

Ten post edytował mortus 18.08.2011, 21:13:33
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: 20.06.2025 - 10:52