Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> klasa logowanie - gdzie sprawdzac zmienne sesyjne
become
post
Post #1





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 12.01.2007

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


Witam.

Jako ze zaczalem uczyc sie OOP chcialbym sie dowiedziec, gdzie umiescic sprawdzanie czy user jest zalogowany ?
Chodzi o to, ze chce informacje o tym czy jest zalogowany trzymac w sesji. I teraz jak zorganizowac klase logowanie ?
Chcialbym przy kazdym przeladowaniu strony sprawdzic, czy istnijeje zmienna sesyjna np. 'userlogin' i na podstawie jej wartosci zalogowac go. Czy calosc operacji zrobic w klasie, czy np. gdzies w kodzie najpierw sprawdzic czy zmienna sesyjna istnieje i dopiero pozniej ewentualnie utworzyc klase Logowanie(), czy raczej przy kazdym wywolaniu strony tworzyc klase Logowanie a w środku niej sprawdzac czy user jest zalogowany ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Cysiaczek
post
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Cytat
// i potem w każdej odpowiedniej podstronie można go sprawdzać
if ( !$user->isLogged() ){
die('trza się zalogować');
}


Niekoniecznie, bo skoro tworzysz instancję klasy User we front controllerze, to można tam też uruchomić proces autoryzacji i jej obsługę. Chyba, że Tobie chodzi o warstwę widoku. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

@beceme - Wszystko zależy od tego, czy User to obiekt pasywny, czy aktywny. Jeśli jest pasywny, to powinien być zarządzany przez inną klasę (np. userManager, Authorization itp. - nazwa nie jest tu tak ważna).
  1. <?php
  2. $auth=new Authorization();
  3. $user=new User($context->username, $context->userpass);
  4. $auth->login($user);
  5. //lub
  6. $auth=new Authorization($context->username, $context->userpass);
  7. $auth->login();
  8. $user=$auth->getUser();
  9. [php]
  10.  
  11. Je&#347;li User jest aktywna, to może zawierać metody autoryzacji.
  12. [php]
  13. $user=new User($context->username, $context->userpass);
  14. $user->login();
  15. ?>


Osobiście skłaniam się ku pierwszemu rozwiązaniu, choć w jakimś małym CMS'ie obsługiwanym przez jedną osobę nie trzeba rozbudowywać autoryzacji, więc drugie rozwiązanie wystarczyłoby w zupełności. Musisz patrzeć na system pod kątem relacji w jakie wchodzą jego obiekty. Np. patrząc logicznie, to klasa User powinna być tylko zestawem danych na temat użytkownika, a więc odzwierciedleniem wiersza z tabeli bazy danych (albo z pliku). Tym samym powinna zawierać metody do operowania tymi danymi, natomiast nie powinna zawierać metod, które wpływają na cały system. Taką metodą jest np. metoda User::login() - użytkownik rejestruje się sam, co jest nielogiczne. Kończąc - masz rację - inna klasa, której celem jest autoryzacja użytkowników jest bardziej zorientowana obiektowo.

Pozdrawiam.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 10:35