Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Kilka klas i ich implementacja.
marcio
post
Post #1





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


WItam w jednym z poprzednich tematow byl link do faq z wikibooks i jako zadanie dla siebie postanowilem rozbudowac sobie tamten przyklad zrobilem jak narazie 2 klasy tworze 3.

1 klasa sluzy do logowania dla mysql jak i dla plikow *.txt -> http://3paste.com/s/374
2 klasa do rejestracji w 2 wyborach jak wyzej. -> http://3paste.com/s/378

Ogolnie plik mysqlDriver.php zawiera prosta klase z debilnym funkcjami tak tylko zeby pocwiczyc (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Chodzi mi o to czy dobrze wszystko zaimplementowalem, co byscie poprawili, co jest do dupy a co jest good.

Czy np logowanie lepiej by wygladalo gdybym w klasie Login mial 2 publiczne pola np $nick i $pass i logowanie np tworzyl tak zamiast przekazywac zmienne z posta do funkcji login():
  1. <?php
  2. include('form.php');
  3. include('classAuth.php');
  4.  
  5. if(isset($_POST['login']) && isset($_POST['pass'])) {
  6.  
  7.  if(TYPE == 'SQL') $user = new Login(new MySqlAuth(new MySqlDriver('***', '***', '***', '***')));
  8.  
  9.  else $user = new Login(new FileAuth('users.txt'));
  10.  
  11.   $user -> nick = $_POST['login'];
  12.   $user -> password = $_POST['pass'];
  13.   echo($user -> AuthLogin());
  14.  
  15. }
  16. ?>

I tak samo jesli chodzi o rejestracje jak i 3 klase ktora pisze edytowanie/usuwanie user'ow lepiej przekazywac wszystko do funckji lub ustawiac pola po instancji klasy lub to zalezy co sie robi?

Jak wy robicie co polecacie??

Ogolnie czekam na szczery komentarz ewentualne zmiany w kodzie i przedstawienie mi go bym mogl sie w koncu czegos pozytywnego nauczyc (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

P.S kod dalem na inny srv by nie robic burdelu w watku.

P.S2 tak wyglada np podstrona dla zalogowanych user'ow: http://3paste.com/s/376

Jakies sugestie??

EDIT:Link zostal poprawiony poprostu przegladalem ostatnio dodane kody na 3paste i przez przypadek skopiowalem nie ten link.

Ten post edytował marcio 11.05.2009, 11:08:45
Go to the top of the page
+Quote Post
zbig
post
Post #2





Grupa: Zarejestrowani
Postów: 144
Pomógł: 30
Dołączył: 5.05.2007
Skąd: Mannheim

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


Witam !

Na wstepie musze powiedziec ze drugi link ktory podales to nie jest niestety " klasa do rejestracji " tylko implementacja scrollowanej textArea w Swingu (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) . Ale to szczegol .
Co do rozwiazania logowania to moim zdaniem jest ok.
Podoba mi sie mozliwosc podania w klasie login zrodla danych , jak i zdefiniowanie ewentualnego drivera.
Jedyna sugestia z mojej strony :
Klasa logowania powinna realizowac mechanizm autentyfikacji usera ale niekoniecznie musi posiadac pola takie jak nick czy password zwiazane bezposrednio z userem.
Generalnie jej zadaniem jest proba zalogowania i stwierdzenie czy logowanie sie powiodlo czy nie.

Do implementacji danych usera uzylbym jakiegos modelu dziedziny z polami zwiazanymi typowo z userem a samego sprawdzenie przy probie logowania
dokonalbym raczej jakos
  1. <?php
  2. $login->doAuth($user->getNick,$user->getPassword)
  3. ?>


A propos przekazywania zmiennych do funkcji/constuctora vs ustawianiu pol w instancji to uwazam ze dobrze jest dac mozliwosc wyboru uzywajacemu twoja klase. Czyli generalnie fajnie jest jezeli klasa posiada obie mozliwosci.

Pozdrawiam
Go to the top of the page
+Quote Post
marcio
post
Post #3





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat
Na wstepie musze powiedziec ze drugi link ktory podales to nie jest niestety " klasa do rejestracji " tylko implementacja scrollowanej textArea w Swingu (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) . Ale to szczegol .

Dodalem EDIT do pi

Cytat
Klasa logowania powinna realizowac mechanizm autentyfikacji usera ale niekoniecznie musi posiadac pola takie jak nick czy password zwiazane bezposrednio z userem.
Generalnie jej zadaniem jest proba zalogowania i stwierdzenie czy logowanie sie powiodlo czy nie.

Czy moglbys rozwinac twoja odpowiedz bo nie bardzo rozumiem.

Cytat
Do implementacji danych usera uzylbym jakiegos modelu dziedziny z polami zwiazanymi typowo z userem a samego sprawdzenie przy probie logowania
dokonalbym raczej jakos

Tego tez nie bardzo rozumiem.

Cytat
propos przekazywania zmiennych do funkcji/constuctora vs ustawianiu pol w instancji to uwazam ze dobrze jest dac mozliwosc wyboru uzywajacemu twoja klase. Czyli generalnie fajnie jest jezeli klasa posiada obie mozliwosci.

To kumam chodz ci np o taka implementacje klasy Login i jej funkcji AuthLogin() i robienie nowej instancji:
  1. <?php
  2. include_once('mysqlDriver.php');
  3.  
  4. interface TAuth {
  5.  
  6. public function login($login, $password);
  7.  
  8. }
  9.  
  10. //tu taka sama implementacja klas MySqlAuth i FileAuth
  11.  
  12. class Login {
  13.  
  14. // zostawiam pola co byly wczesniej i dodaje 2 pola publiczne:
  15.  
  16. public $name;
  17. public $pwd;
  18. private $nick;
  19. private $auth;
  20.  
  21. public function __construct($auth) {
  22.  
  23. $this -> auth = $auth;
  24.  
  25.  }
  26.  
  27. //metody statyczne LoginAuth i LogOut zostaja takie same.
  28.  
  29. public function AuthLogin() {
  30.  
  31. $this -> name = '';
  32. $this -> pwd = '';
  33. $usr = $_POST['login'];
  34. $haslo = $_POST['pass']
  35.  
  36.  if($this -> name == '' && $this -> pwd == '') $user = $this -> auth -> login($usr, $haslo);
  37.  
  38.  else if($this -> != '' && $this -> pwd != '') $user = $this -> auth -> login($this -> name, $this -> pwd);
  39.  
  40. if($user) {
  41.  
  42.   $this -> nick = $user['login'];
  43.   $_SESSION['login'] = true;
  44.   $_SESSION['name'] = $this -> nick;
  45.   header("Location: user.php");
  46.  
  47.      }
  48.  
  49.  else return '<div style="margin:auto;padding:5px;width:25%;border:solid 1px #FF0000;background-color:#FFFFFF;color:#FF0000;text-align:center;">Podano zle dane.</div>';
  50.    
  51.   }
  52.  
  53. public function __destruct() {
  54.  
  55. unset($this -> nick);
  56. unset($this -> auth);
  57.  
  58.   }
  59.  
  60. }
  61.  
  62. //Instancja klasy Login wygladala by tak jesli nie ustawiam pola name i pola pwd:
  63.  
  64. include('form.php');
  65. include('classAuth.php');
  66.  
  67. if(isset($_POST['login']) && isset($_POST['pass'])) {
  68.  
  69.  if(TYPE == 'SQL') $user = new Login(new MySqlAuth(new MySqlDriver('85.17.1.175', 'marcios', 'marciniak15', 'marcios')));
  70.  
  71.  else $user = new Login(new FileAuth('users.txt'));
  72.  
  73.   echo($user -> AuthLogin());
  74.  
  75. }
  76.  
  77.  
  78. //Z ustawieniem pola name i pola pwd:
  79.  
  80. include('form.php');
  81. include('classAuth.php');
  82.  
  83. if(isset($_POST['login']) && isset($_POST['pass'])) {
  84.  
  85.  if(TYPE == 'SQL') $user = new Login(new MySqlAuth(new MySqlDriver('85.17.1.175', 'marcios', 'marciniak15', 'marcios')));
  86.  
  87.  else $user = new Login(new FileAuth('users.txt'));
  88.  
  89.   $user -> name = $_POST['login'];
  90.   $user -> pwd = $_POST['pass'];
  91.  
  92.   echo($user -> AuthLogin());
  93.  
  94. }
  95. ?>

Tylko nie wiem czy to zadziala bo nie sprawdzalem jak sprawdze to dopiero wieczorem bo glownie chodzi o to czy te warubki zadzialaja:
  1. <?php
  2.   if($this -> name == '' && $this -> pwd == '') $user = $this -> auth -> login($usr, $haslo);
  3.  
  4.   else if($this -> != '' && $this -> pwd != '') $user = $this -> auth -> login($this -> name, $this -> pwd);
  5. ?>

Poniewaz nie jestem znawca to jesli nie ustawie pol namei pwd czyli 1 przyklad tworzenia instacnji to powinno wywolac sie to:
Kod
$user = $this -> auth -> login($usr, $haslo);

Jesli ustawie:
Kod
$user = $this -> auth -> login($this -> name, $this -> pwd);

Tylko nie wiem czy jak nie ustawie pol name i pwd to beda one empty czyli == '' lub beda null i nie wiem czy dobry jest warunek i czy na tej zasadzie ma to dzialac lub macie jakies inne sposoby na to bo w teorii powinno to dzialac.

Ten post edytował marcio 11.05.2009, 12:01:37
Go to the top of the page
+Quote Post

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: 15.10.2025 - 17:34