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

Posty w temacie


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

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 20:58