Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Pierwszy skrypt na klasach - dobry ?
Forum PHP.pl > Forum > Przedszkole
Dominator
Powoli przerzucam się z programowania strukturalnego na obiektowe, więc napisałem skrypt.
Dobrze napisałem ? Co zmienić/poprawić ?

  1. <?php
  2. class User
  3. {
  4. public $_login;
  5. public $_password;
  6. public function Login($_login, $_password)
  7. {
  8. $this->login = $_login;
  9. $this->password = $_password;
  10. if($this->login == "123")
  11. {
  12. if($this->password == "456")
  13. {
  14. return "Logged";
  15. }
  16. else
  17. {
  18. return "Bad password";
  19. }
  20. }
  21. else
  22. {
  23. return "Bad username";
  24. }
  25. }
  26. }
  27.  
  28. if($_GET['username'] && $_GET['password'])
  29. {
  30. $user = new User;
  31. echo $user->Login($_GET['username'], $_GET['password']);
  32. }
SmokAnalog
Pomijając wątpliwą logikę tego skryptu, sama struktura obiektowa jest w miarę poprawna poza jednym szczegółem. Mianowicie, deklarujesz w klasie pole (zmienne) $_login i $_password, a wewnątrz metody login() przypisujesz wartości do pól $login i $password. Błędu PHP nie wyrzuci, bo nie wymaga deklaracji pól, ale "niesmak pozostaje" smile.gif

Pomysł ze zwracaniem łańcucha znaków w metodzie login() jest dosyć słaby, ale domyślam się, że dopiero zacząłeś przygodę z obiektowością i - sądząc po jakości kodu - z samym PHP, więc zapewne sam do tego dojdziesz.
Szymciosek
Można byłoby trochę krócej, a po drugie nie przekazuje się takich danych jak login/password w $_GET, jak już to $_POST, ale do tego sam dojdziesz jak poczytasz, dalej... nie wyświetla się informacji o tym, że sam login jest zły, albo jeśli login podam dobry, to dostaję informację o tym, że hasło złe...

coś w ten deseń jak już:

  1. if ($login == 'Szymek' && $password = '123')
  2. {
  3. //zaloguj
  4. } else {
  5. //wyswietl informacje: Błędny login / hasło
  6. }
!*!
Ujdzie + to co napisali wyżej, dodam od siebie żebyś zamienił w edytorze tabulacje na spacje, oraz poczytał o PSR-0/1/2 i się tych zasad trzymał.
rivos
  1. <?php
  2. class User
  3. {
  4. public $_login;
  5. public $_password;
  6. public function __construct($_login, $_password)
  7. {
  8. if($_login == "123") {
  9. if($_password === "456") {
  10. return "Logged";
  11. $this->login = $_login;
  12. $this->password = $_password;
  13. }else {
  14. return "Bad password";
  15. }
  16. }else {
  17. return "Bad username";
  18. }
  19. }
  20. }
  21.  
  22. if($_GET['username'] && $_GET['password'])
  23. {
  24. echo $user = new User($_GET['username'], $_GET['password']);
  25. }


wydaje mi się, że będzie Ci tak wygodniej biggrin.gif
Szymciosek
Jaki jest sens powiadamiania użytkownika, że tylko hasło jest złe ?

Będzie w bazie użytkownik XXX, ja się o tym dowiem, bo podając dobry login, a złe hasło dostanę taką informację i później tylko zgadywać hasło...
mas
no i przydaloby sie zmienne $_login i $_password ustawic jako private. Nie wiem co to jest $this->login skoro w klasie masz zadeklarowane zmienne $_login i $_password

podając w konstruktorze zmienna $_login musisz ja przypisac do zmiennej w klasie w twoim przypadku o takiej samej nazwie
$this->_login=$_login;
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.