Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Pierwszy skrypt na klasach - dobry ?
Dominator
post
Post #1





Grupa: Zarejestrowani
Postów: 565
Pomógł: 15
Dołączył: 11.10.2010

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


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


Ten post edytował Dominator 8.09.2012, 22:32:18
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
SmokAnalog
post
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


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" (IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post
Szymciosek
post
Post #3





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


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. }
Go to the top of the page
+Quote Post
!*!
post
Post #4





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


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ł.
Go to the top of the page
+Quote Post
rivos
post
Post #5





Grupa: Zarejestrowani
Postów: 50
Pomógł: 2
Dołączył: 26.12.2011

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


  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 (IMG:style_emoticons/default/biggrin.gif)

Ten post edytował rivos 9.09.2012, 09:39:49
Go to the top of the page
+Quote Post
Szymciosek
post
Post #6





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


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...
Go to the top of the page
+Quote Post
-mas-
post
Post #7





Goście







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;
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: 18.09.2025 - 14:19