Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] MVC i klasa z autoryzacją
Forum PHP.pl > Forum > Przedszkole
bor1904
Witam
Zaczynam dopiero przygodę z OOP w PHP5 i modelem MVC, a muszę zacząć kodować jednocześnie ucząc się teorii sad.gif
Czy to co zaprezentowałem poniżej ma choć odrobine sensu ? może niewiele trzeba by nabrało ? smile.gif

  1. <?php
  2.  
  3. ///klasa obsługująca autoryzację na stronie
  4. //(każde "wejście na serwer WWW"-czyli wywołanie index.php ma się wiązać ze stworzeniem instancji tej klasy)
  5. //potem instancja Front Controlera bedzie w pierwszej kolejności sprawdzała czy user jest zalogowany :
  6. //nie : wywołanie kontrolera akcji "logowanie" -> WIDOK GENERUJE FORMULARZ DO LOGOWANIA
  7. //tak: na podstawie $_GET wybiera kontroler akcji -> MODEL robi swoje -> WIDOK obiera dane z modelu w HTML i do przeglądarki
  8. ///Czy to ma sens ? Dopiero zaczynam z OOP w PHP i MVC - dąże do popełnienia mega prostego "frameworka" z obowiązkową autoryzacją
  9. class UserAuth {
  10. //pole przechowujace info czy dany użytkownik jest zalogowany czy nie
  11. private $logged_in;
  12. // sprawdzenie czy posiadacz tego nr sesjii i adresu ip przy logowaniu podał poprawne dane i czy w ogóle sie logował
  13. public function __construct() {
  14. if(isset($_SESSION['isLoggedIn'])){
  15. if(($_SESSION['isLoggedIn'] == 'yes') && ($_SERVER['REMOTE_ADDR'] == $_SESSION['REMOTE_ADDR'])){
  16. $this->logged_in = yes;
  17. }
  18. }else{
  19. $this->logged_in = no;
  20. $_SESSION['isLoggedIn'] = 'no';
  21. }
  22. }
  23.  
  24. //zwraca czy dany użytkownik jest zalogowany
  25. //pytanie: czy zrobić tą funkcję statyczną ? wydaje mi się, że nie ma różnicy
  26. public function IsLoggedIn() {
  27. return($this->logged_in);
  28. }
  29.  
  30. //funkcja pobiera "z widoku" login i hasło -docelowo md5 będzie szyfrowaćjs po stronie klienta oraz zapamiętuje adres ip zdalnej maszyny
  31. //pytanie: zakładając, że tylko jeden user bedzie sie logował(zawsze) i plik z tą klasą będzie niedostępny "DenyAccess"
  32. //to czy login i hasło moge w tym pliku przechowywać questionmark.gif?
  33. public function Login($strUsername, $strPlainPassword) {
  34. $strMD5Password = md5($strPlainPassword);
  35. if (($strUsername == admin) && ($strMD5Password == md5('password'))) {
  36. $_SESSION['REMOTE_ADDR'] = $_SERVER['REMOTE_ADDR'];
  37. $_SESSION['isLoggedIn'] = 'yes';
  38. $this->logged_in = yes;
  39. }else{
  40. $_SESSION['isLoggedIn'] == 'no';
  41. $this->logged_in = no;
  42. }
  43. }
  44.  
  45. //wylogowuje danego użytkownika
  46. //pytanie: czy zrobić to tak jak jest czy zniszczyć przy pomocy destroy_session() questionmark.gif
  47. public function LogOut() {
  48. $_SESSION['isLoggedIn'] == 'no';
  49. $this->logged_in = no;
  50. }
  51. }
  52.  
  53. ?>


Dziękuję za każdą pomoc i pozdrawiam

Wesołych
ActivePlayer
sens ma, na pewno oddziela logikę od reszty. jedyne co mogę Ci zasugerować - jeśli piszesz cmsa, rozważ czy nie logować użytkownika o id np 1 oraz loginie "quest". pozwoli Ci to na późniejsze zarządzanie jego uprawnieniami (jeśli w ogóle planujesz pisać coś takiego), tak jak dla każdego innego użytkownika.

rozumiem też że funkcja login, będzie docelowo pobierała dane z bazy danych, odnośnie zalogowanego usera?
bor1904
Uff ciesze się, że nie rozstrzelano mnie jak zwykle na wstępie... ;]

To dość specyficzna "strona WWW" ponieważ to będzie taki panel do zarządzania usługami w linuxie -> tylko jedna jedyna osoba ma mieć dostęp (administrator coś jak root) i cokolwiek chciałaby zrobić musi się najpierw zautoryzować....
Hasło i login będzie sie wprowadzał podczas instalacji tego całego systemu z panelem.
(wszystko idzie po https a dostęp do pliku z hasłem i loginem bedzie ustawiony na AccessDeny)

Czy w takich okolicznościach jest ok ?biggrin.gif


Pozdrawiam
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.