Kurs PHP cz.3 – Logowanie do strony

Logowanie do strony jest jednym z najczęściej poruszanych problemów na forach. Często początkujący nie zdają sobie  z prawy z tego jak to zagadnienie jest skomplikowane i oczekują 10 linijek kodu które załatwią sprawę, tak naprawdę nie ma jednak doskonałego rozwiązania. To które wybierzemy zależy od bezpieczeństwa jakie chcemy osiągnąć. Dzisiaj zademonstruje najprostszy i najmniej bezpieczny sposób jednak w pełni działający i skuteczny. Będzie opierać się on o pliki COOKIE a dane logowanie będą przechowywane w bazie danych MySQL. Więc przystępujemy do kodowania.

To jest nasz panel logowania:

<form method="POST" action="login.php">
<input type="text" name="login" placeholder="Login" />
<input type="password" name="password" placeholder="Hasło" />
<input type="submit" value="Zaloguj" />
</form>

teraz zobaczmy jak wygląda tabele „users” w bazie danych:

ID login haslo_md5 imie
1 admin 207023ccb44feb4d7dadca005ce29a64 Jan
2 mariolka12 7208c9b62007ef8812e11bb005d8e8ec Mariola

Więc teraz skupmy się na skrypcie odpowiedzialnym za zalogowanie (login.php):


<?php
$user = $_POST['login'];
$password = $_POST['password'];
if(!$user && !$password) echo 'Nie podano nazwy użytkownika lub hasła!';
else
{
$pas_md5 = md5($password);
$sql_conn = mysql_connect('serwer.com', 'admin', 'passwd');
$wynik = mysql_query("SELECT * FROM users WHERE login = '$user'");
if(mysql_num_rows($wynik) > 0)
{
$r = mysql_fetch_object($wynik);
if($r->haslo_md5 == $pas_md5)
{
setcookie('login', $r->ID, time()+3600);
echo "zalogowano poprawnie";
} else echo "Błędne hasło!";
}else echo "Nie ma takiego użytkownika!";
}
?>

Teraz aby sprawdzić czy użytkownik jest zalogowany sprawdzamy czy wartość zmiennej

 $_COOKIE['login]' 

jest różna od zero. Sama wartość tej zmiennej wskazuje natomiast na ID użytkownika w bazie. Aby go wylogować wystarczy usunąć ciasteczko lub przypisać mu wartość zero. Niestety taki sposób jest bardzo prosty do obejścia, wystarczy utworzyć ciasteczko z dowolną wartością różna od zera aby być zalogowanym na stronie.  Jednak dla zielonych jest to świetny obraz jak to mniej więcej działa.

setcookie('login', 0, time()+3600); // ustawiam wartość zero

//lub

setcookie('login, 0, time()); // usuwamy ciasteczko

Myślę, że wystarczająco przybliżyłem temat podstaw realizacji logowania do strony, w razie pytań zapraszam do komentowania.

Share Button

Dodaj komentarz