Autoryzacja użytkownika w PHP
W tym artykule przedstawię dwa sposoby uwierzytelniania osoby logującej.
Sposób I - Porównanie haseł
Sposób ukazany tutaj jest trywialny i raczej nie zaleca się stosowania go. Jednak może się komuś przydać.
Co to robi?
Skrypt pobiera wpisane w formularzu hasło i porównuje z hasłem w pliku, jeśli hasła się zgadzają użytkownik otrzymuje dostęp do strony w przeciwnym wypadku wyświetla mu się stosowny komunikat.
login.html
<form action="login.php" method="post">
<input type="password" name="pass" size="20">
<input type="submit" value="LogIn">
</form>
Formularz w którym wpisujemy hasło aby się zalogować.
config.inc.php
![]()
$haslo = 'haslo@bcb'; //haslo admina
![]()
Plik ze zdefiniowanym hasłem admina. Najlepiej trzymać takie pliki poza drzewem katalogów.
login.php
![]()
![]()
//krótkie nazwy zmiennych
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
$pass = $_POST['pass'];
![]()
//pobieramy plik z haslem admina spoza drzewa katalogu
include "$DOCUMENT_ROOT/../login_php/config.inc.php";
![]()
//sprawdzenie czy haslo zostało wpisane
if(isset($pass)){
![]()
//sprawdzenie czy haslo wpisane zgadza się z hasłem w pliku
if($pass == $haslo){
![]()
//jeśli się zgadza wyświetlamy część dla admina
echo 'Witaj adminie, panel stoi przed tobą otworem';
![]()
}
else{
![]()
//jeśli się nie zgadza wyświetlamy stosowny komunikat
echo 'Nie znasz hasła ?<br />Admin zawsze zna poprawne hasło, odejdź stąd!';
![]()
}
![]()
}
else{
![]()
//wiadomość jeśli hasło nie zostało wpisane
echo 'Nie wpisałeś hasła!!';
![]()
}
![]()
![]()
Komentarze wszystko wyjaśniają przypomnę tylko co robi funkcja isset - sprawdza istnienie zmiennej.
Sposób II - Autoryzacja HTTP
Ten sposób autoryzacji jest dużo lepszy, zatem prześledźmy kod tegoż skryptu.
config.inc.php
![]()
![]()
$login = 'bcb'; //login admina
$haslo = 'haslo@bcb'; //haslo admina
![]()
![]()
Plik z loginem i hasłem admina.
login2.php
![]()
![]()
//krótkie nazwy zmiennych
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
$PHP_AUTH_USER = $_SERVER['PHP_AUTH_USER'];
$PHP_AUTH_PW = $_SERVER['PHP_AUTH_PW'];
![]()
//pobieramy plik z haslem admina spoza drzewa katalogu
include "$DOCUMENT_ROOT/../login_php/config.inc.php";
![]()
//sprawdzenie loginu i hasla
if ($PHP_AUTH_USER != $login || $PHP_AUTH_PW != $haslo){
![]()
//jeśli się nie zgadza ponawiamy probe logowania
header('WWW-Authenticate: Basic realm="Podaj haslo"');
header('HTTP/1.0 401 Unauthorized');
echo 'Nie znasz hasła, błąd logowania!';
![]()
}
else{
![]()
//jeśli się zgadza wyświetlamy część dla admina
echo 'Zalogowany witamy w panelu admina!';
![]()
}
![]()
![]()
Kod tegoż skryptu jest równie prosty wytłumaczyłem go w komentarzach :) lepiej nie potrafię.










