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:
<?php
class Uzytkownik
{
private $bazaDanych;
//łączenie z bazą danych
public function polaczZBazaDanych()
{
$this->bazaDanych = new mysqli('localhost','uzytkownik','haslo','bazaDanych');
}
//reozlaczenie z baza danych
public function rozlaczZBazaDanych()
{
$this->bazaDanych->close();
}
//walidacja danych wprowadzonych przez użytkownika
private function walidacja($dana)
{
//do uzupełnienia
return $dana;
}
//rejestracja użytkownika
public function zarejestrujUzytkownik($login,$email,$haslo1,$haslo2)
{
//łączenie z bazą danych
$this->polaczZBazaDanych();
//walidacja czterech zmiennych
$login = $this->walidacja($login);
$email = $this->walidacja($email);
$haslo1 = $this->walidacja($haslo1);
$haslo2 = $this->walidacja($haslo2);
//zapytanie czy istnieje użytkownik o podanym loginie lub mailu
$sqlSprawdzenieCzyIstniejeUzytkownikWBazieDanych = "SELECT * FROM uzytkownicy
WHERE loginU = '".$login."' OR email = '".$email."'
";
//wykonanie powyższego zapytania
$rezultatSprawdzenia = $this->bazaDanych->query($sqlSprawdzenieCzyIstniejeUzytkownikWBazieDanych);
//jezeli znaleziono użytkownika o takim samym loginie lub emailu
if ($rezultatSprawdzenia->num_rows > 0)
{
echo "<span class='zle'>Użytkownik o takim samym loginie lub email-u instnieje, Rejesrtacja nie powiodła się</span>"; return false;
}
else
{
//sprawdzenie czy hasła są identyczne
if ($haslo1 != $haslo2)
{
//jeżeli nie są identyczne hasła odpowiedni komunikat
echo "<span class='zle'>Hasła nie powtórzyły się</span>"; return false;
}
//zapytanie - rejestracja użytkownika - zapisanie do bazy danych
$sqlRejestracjaUzytkownik = "INSERT INTO uzytkownicy (loginU,email,haslo)
VALUES ('".$login."','".$email."',SHA1('".$haslo1."'))";
//wykonanie powyższego zapytania
$rezultat = $this->bazaDanych->query($sqlRejestracjaUzytkownik);
//jeżli rejestracja się powiodła odpowiedni komunikat
if ($rezultat)
echo "<span class='ok'>Zarejestrowano</span>"; //jeżeli rejestracja się nie powiodła odpowiedni komunikat
else
echo "<span class='zle'>Rejestracja nie powiodła się</span>"; }
$this->rozlaczZBazaDanych();
}
//logowanie użytkownika
public function zalogujUzytkownik($login,$haslo)
{
//walidacja
$login = $this->walidacja($login);
$haslo = $this->walidacja($haslo);
//łączymy z bazą danych
$this->polaczZBazaDanych();
//zapytanie czy ligin i hasło się zgadzają
$sqlLogowanie = "SELECT * FROM uzytkownicy WHERE
loginU = '".$login."' AND haslo = SHA1('".$haslo."')";
//wykonanie powyższego zapytania
$rezultatLogowanie = $this->bazaDanych->query($sqlLogowanie);
//jeżeli znaleziono dane o takim użytkowniku to logujemy
if ($rezultatLogowanie->num_rows == 1)
{
$rezultatLogowanie = $rezultatLogowanie->fetch_assoc();
//ustawienie sesji użytkownika - przechowuje login użytkownika
$_SESSION['uzytkownik'] = $rezultatLogowanie['loginU'];
//odpowiedzni komunikat po zalogowaniu
echo "<span class='ok'>Zalogowano użytkownika ".$_SESSION['uzytkownik']." <a href='uzytkownik.php?akcja=wyloguj'>Wyloguj</a></span>"; }
else
{
//nie znaleziono użytkownika o takich danych - odpowiedni komunikat o tym fakcie
echo "<span class='zle'>Nieudana próba logowania</span>"; }//rozłączamyh z bazą danych
$this->rozlaczZBazaDanych();
}
//wylogowywanie
public function wyloguj()
{
//usuwanie zmiennej sesji
unset($_SESSION['uzytkownik']); //odpowiedni komunikat informujący o wylogowaniu
echo "<span class='ok'>Wylogowano</span>"; }
//pokazujemy info o zalogowanym użytkowniku lub o braku zalogowania
public function czyZalogowano()
{
//w zależności o istnieniu sesji użytkownika odpowiednia informacja
if (isset($_SESSION['uzytkownik'])) echo "<span class='ok'>Zalogowano jako ".$_SESSION['uzytkownik']."<a href='uzytkownik.php?akcja=wyloguj' >Wyloguj</a></a></span>"; else
echo "<span><a href='uzytkownik.php?akcja=zalogujFormularz'>Nie jesteś zalogowany - zaloguj się</a></span>"; }
}
?>
Za ocenę dziękuję
Ten post edytował huberthx 25.11.2019, 21:16:51