Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php OOP] Prosba o opinie nt. pierwszej klasy
phpion
post
Post #1





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Chcialbym was prosic o opinie i sugestie nt. mojej pierwszej klasy podczsa nauki OOP. Co mozna w niej poprawic, co nalezaloby napisac inaczej. Poczatek czyli laczenie z baza i ustawianie sesji jest tylko tymczasowo. Prosze o informacje co i jak. Do czego moglby sluzyc destruktor w tej klasie? Do zerowania atrybutow? Wogole nie widze wiekszego sensu destruktora w tym przypadku - moze sie myle, prosze mnie wiec oswiecic.
  1. <?php
  2. $sql = mysql_connect("localhost", "root", "");
  3. mysql_select_db("logowanie");
  4.  
  5.  
  6. $_SESSION['login'] = "phpion";
  7. $_SESSION['haslo'] = "haslo";
  8.  
  9. class Uzytkownik
  10. {
  11. private $login;
  12. private $haslo;
  13. private $grupa;
  14. private $zalogowany;
  15. private $dostep;
  16.  
  17. function __construct()
  18. {
  19. $this->login = (isset($_SESSION['login'])) ? $_SESSION['login'] : NULL;
  20. $this->haslo = (isset($_SESSION['haslo'])) ? $_SESSION['haslo'] : NULL;
  21. $this->grupa = 0;
  22. $this->zalogowany = $this->dostep = FALSE;
  23. }
  24.  
  25. function sprawdzZalogowanie()
  26. {
  27. if ($this->login != NULL && $this->haslo != NULL)
  28. {
  29. $q = "SELECT grupa FROM uzytkownicy WHERE BINARY login='".$this->login."' AND BINARY haslo='".$this->haslo."' AND stan='1'";
  30. $q = mysql_query($q);
  31.  
  32. if (mysql_num_rows($q) > 0)
  33. {
  34. $r = mysql_fetch_row($q);
  35.  
  36. $this->grupa = $r[0];
  37. $this->zalogowany = TRUE;
  38. }
  39. }
  40. }
  41.  
  42. function sprawdzDostep($typ, $lista)
  43. {
  44. $this->sprawdzZalogowanie();
  45.  
  46. if ($this->zalogowany == TRUE && $this->grupa != 0)
  47. {
  48. $tablica = explode(" ", $lista);
  49.  
  50. if (($typ == 1 && in_array($this->grupa, $tablica) || ($typ == 0 && !in_array($this->grupa, $tablica))))
  51. $this->dostep = TRUE;
  52. }
  53.  
  54. if ($this->dostep != TRUE)
  55. {
  56. header("Location: accessDenied.php");
  57. }
  58. }
  59. }
  60.  
  61. $uzytkownik = new Uzytkownik();
  62. $uzytkownik->sprawdzDostep(0, "1 2");
  63. ?>
  64. Tajna tresc

PS: w metodzie sprawdzDostep $typ moze byc 0 lub 1 (0 dla wylaczania dostepu dla grup, 1 dla udostepnianiu dla wskazanych grup) i liste grup podajemy jako ciag liczb oddzielonych spacja.

Ten post edytował phpion.com 17.07.2006, 20:18:36
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Ludvik
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


Cytat
1. Używasz globalnej tablicy $_SESSION wewnatrz klasy, co jest "be".

To nie jest tablica globalna... To jest tablica superglobalna, a to nie jest takie bardzo "be"...

Ja bym zmienił modyfikatory private na protected. Czasami przydaje się dziedziczenie przy takich klasach. Tak jak napisał Cysiaczek, napisz funkcje dostępu. Poza tym sesje są bezpieczne i nie musisz sprawdzać czy użytkownik istnieje co wywołanie strony. Co innego, gdybyś dane pozyskiwał z ciastka, które użytkownik może modyfikować.

Inna uwaga. Zapomnij o exitach w klasach! Nigdy czegoś takiego się nie robi. Możesz wyrzucić wyjątek, który sobie wyłapiesz i zrobisz wtedy co chcesz.

Tyle ode mnie. Nie jest źle (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
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: 16.10.2025 - 06:05