Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Rejestracja i logowanie
huberthx
post 25.11.2019, 21:14:09
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 1.01.2016

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


Czy moglibyście zapoznać się z moim kodem rejestracji i logowania użytkowników.
Po ostatniej wpadce ze stronką chciałbym zasięgnąć opinii bardziej doświadczonych programistów, a że nie mam kogo się poradzić pisze dlatego na tym forum.
Oto kod:
  1. <?php
  2. class Uzytkownik
  3. {
  4. private $bazaDanych;
  5. //łączenie z bazą danych
  6. public function polaczZBazaDanych()
  7. {
  8. $this->bazaDanych = new mysqli('localhost','uzytkownik','haslo','bazaDanych');
  9. }
  10. //reozlaczenie z baza danych
  11. public function rozlaczZBazaDanych()
  12. {
  13. $this->bazaDanych->close();
  14. }
  15. //walidacja danych wprowadzonych przez użytkownika
  16. private function walidacja($dana)
  17. {
  18. //do uzupełnienia
  19. return $dana;
  20. }
  21. //rejestracja użytkownika
  22. public function zarejestrujUzytkownik($login,$email,$haslo1,$haslo2)
  23. {
  24. //łączenie z bazą danych
  25. $this->polaczZBazaDanych();
  26. //walidacja czterech zmiennych
  27. $login = $this->walidacja($login);
  28. $email = $this->walidacja($email);
  29. $haslo1 = $this->walidacja($haslo1);
  30. $haslo2 = $this->walidacja($haslo2);
  31. //zapytanie czy istnieje użytkownik o podanym loginie lub mailu
  32. $sqlSprawdzenieCzyIstniejeUzytkownikWBazieDanych = "SELECT * FROM uzytkownicy
  33. WHERE loginU = '".$login."' OR email = '".$email."'
  34. ";
  35. //wykonanie powyższego zapytania
  36. $rezultatSprawdzenia = $this->bazaDanych->query($sqlSprawdzenieCzyIstniejeUzytkownikWBazieDanych);
  37. //jezeli znaleziono użytkownika o takim samym loginie lub emailu
  38. if ($rezultatSprawdzenia->num_rows > 0)
  39. {
  40. echo "<span class='zle'>Użytkownik o takim samym loginie lub email-u instnieje, Rejesrtacja nie powiodła się</span>";
  41. return false;
  42. }
  43. else
  44. {
  45. //sprawdzenie czy hasła są identyczne
  46. if ($haslo1 != $haslo2)
  47. {
  48. //jeżeli nie są identyczne hasła odpowiedni komunikat
  49. echo "<span class='zle'>Hasła nie powtórzyły się</span>";
  50. return false;
  51. }
  52. //zapytanie - rejestracja użytkownika - zapisanie do bazy danych
  53. $sqlRejestracjaUzytkownik = "INSERT INTO uzytkownicy (loginU,email,haslo)
  54. VALUES ('".$login."','".$email."',SHA1('".$haslo1."'))";
  55. //wykonanie powyższego zapytania
  56. $rezultat = $this->bazaDanych->query($sqlRejestracjaUzytkownik);
  57. //jeżli rejestracja się powiodła odpowiedni komunikat
  58. if ($rezultat)
  59. echo "<span class='ok'>Zarejestrowano</span>";
  60. //jeżeli rejestracja się nie powiodła odpowiedni komunikat
  61. else
  62. echo "<span class='zle'>Rejestracja nie powiodła się</span>";
  63. }
  64. $this->rozlaczZBazaDanych();
  65. }
  66. //logowanie użytkownika
  67. public function zalogujUzytkownik($login,$haslo)
  68. {
  69. //walidacja
  70. $login = $this->walidacja($login);
  71. $haslo = $this->walidacja($haslo);
  72. //łączymy z bazą danych
  73. $this->polaczZBazaDanych();
  74. //zapytanie czy ligin i hasło się zgadzają
  75. $sqlLogowanie = "SELECT * FROM uzytkownicy WHERE
  76. loginU = '".$login."' AND haslo = SHA1('".$haslo."')";
  77. //wykonanie powyższego zapytania
  78. $rezultatLogowanie = $this->bazaDanych->query($sqlLogowanie);
  79. //jeżeli znaleziono dane o takim użytkowniku to logujemy
  80. if ($rezultatLogowanie->num_rows == 1)
  81. {
  82. $rezultatLogowanie = $rezultatLogowanie->fetch_assoc();
  83. //ustawienie sesji użytkownika - przechowuje login użytkownika
  84. $_SESSION['uzytkownik'] = $rezultatLogowanie['loginU'];
  85. //odpowiedzni komunikat po zalogowaniu
  86. echo "<span class='ok'>Zalogowano użytkownika ".$_SESSION['uzytkownik']." <a href='uzytkownik.php?akcja=wyloguj'>Wyloguj</a></span>";
  87. }
  88. else
  89. {
  90. //nie znaleziono użytkownika o takich danych - odpowiedni komunikat o tym fakcie
  91. echo "<span class='zle'>Nieudana próba logowania</span>";
  92. }//rozłączamyh z bazą danych
  93. $this->rozlaczZBazaDanych();
  94. }
  95. //wylogowywanie
  96. public function wyloguj()
  97. {
  98. //usuwanie zmiennej sesji
  99. unset($_SESSION['uzytkownik']);
  100. //odpowiedni komunikat informujący o wylogowaniu
  101. echo "<span class='ok'>Wylogowano</span>";
  102. }
  103. //pokazujemy info o zalogowanym użytkowniku lub o braku zalogowania
  104. public function czyZalogowano()
  105. {
  106. //w zależności o istnieniu sesji użytkownika odpowiednia informacja
  107. if (isset($_SESSION['uzytkownik']))
  108. echo "<span class='ok'>Zalogowano jako ".$_SESSION['uzytkownik']."<a href='uzytkownik.php?akcja=wyloguj' >Wyloguj</a></a></span>";
  109. else
  110. echo "<span><a href='uzytkownik.php?akcja=zalogujFormularz'>Nie jesteś zalogowany - zaloguj się</a></span>";
  111. }
  112. }
  113. ?>
  114.  

Za ocenę dziękuję

Ten post edytował huberthx 25.11.2019, 21:16:51
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
huberthx
post 29.11.2019, 18:25:17
Post #2





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 1.01.2016

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


Poczytałem i oto wynik mojej nauki i prośba o ocenę.
Przepraszam za być może nieodpowiednie nazewnictwo metod bądź składowych
Oto zarys kodu:
  1. <?php
  2.  
  3. class Db
  4. {
  5. private static $instance;
  6. private $host = 'localhost';
  7. private $username = 'uzytkownik';
  8. private $password = 'haslo';
  9. private $database = 'bazaDanych';
  10. private $connection;
  11. public static function getInstance()
  12. {
  13. if (self::$instance === null)
  14. {
  15. self::$instance = new Db();
  16. }
  17. return self::$instance;
  18. }
  19. private function __construct()
  20. {
  21. $this->connection = new mysqli($this->host,$this->username,$this->password,$this->database);
  22. }
  23. private function __clone() {}
  24. public function getConnection()
  25. {
  26. return $this->connection;
  27. }
  28. }
  29. $Db = Db::getInstance();
  30.  
  31. class Uzytkownik
  32. {
  33. private $login;
  34. private $haslo;
  35. public function setLogin($login) : void
  36. {
  37.  
  38. $this->login = $login;
  39. }
  40. public function getLogin() : String
  41. {
  42. return $this->login;
  43. }
  44. public function setHaslo($haslo) : void
  45. {
  46. $this->haslo = $haslo;
  47. }
  48. public function getHaslo() : String
  49. {
  50. return $this->haslo;
  51. }
  52. private $db;
  53. public function bazaDanych($db)
  54. {
  55. $this->db = $db;
  56. return $this->db;
  57. }
  58. public function rejestracja($login,$haslo)
  59. {
  60. $this->setLogin($login);
  61. $this->setHaslo($haslo);
  62. $login = $this->getLogin();
  63. $haslo = $this->getHaslo();
  64. $this->db->query(/*ZAPYTANIE INSERT*/);
  65. }
  66. }
  67.  
  68. $Uzytkownik = new Uzytkownik();
  69. $Uzytkownik->bazaDanych($Db->getConnection());
  70. $Uzytkownik->rejestracja('login','haslo');
  71.  
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 3.06.2024 - 05:14