RkBlog

Hardware, programming and astronomy tutorials and reviews.

Uwierzytelnianie HTTP

Oto prosty system uwierzytelniania HTTP:
<?php

If ($_SERVER['PHP_AUTH_USER'] != 'user' || $_SERVER['PHP_AUTH_PW'] != 'haslo')
	{
	header("WWW-Authenticate: Basic realm=Logowanie do systemu");
	header("HTTP/1.0 401 Unauthorized");
	echo 'błąd logowania';
	exit();
	}
// Wszystko poniżej jest chronione
echo 'zalogowany';
Kod ten wywoła nam okienko logowania - uwierzytelniania. Gdy podamy poprawny login i hasło będziemy zalogowani. Będziemy mieć "dostęp" do reszty danego pliku. System dobry jako logowanie np. do panelu admina prostego skryptu itp. Można też go rozciągnąć jako logowanie użytkowników. Powiedzmy że mamy tablicę asocjacyjną :
<?php

$tab['jan'] = 'haslo';
$tab['jurek'] = 'haslo2';
$tab['asia'] = 'haslo3';

If ($tab[$_SERVER['PHP_AUTH_USER']] != $_SERVER['PHP_AUTH_PW'] || !isset($_SERVER['PHP_AUTH_USER']))
	{
	header("WWW-Authenticate: Basic realm=Logowanie do systemu");
	header("HTTP/1.0 401 Unauthorized");
	echo 'błąd logowania';
	exit();
	}
echo 'zalogowany';
Dla bezpieczeństwa zazwyczaj hasła są kodowane w md5. Jeżeli tablica ma zakodowane hasła to skrypt wyglądałby tak:
<?php

$tab[jan] = '207023ccb44feb4d7dadca005ce29a64';
$tab[jurek] = 'ed71c5d55af657bc2413020e5580d4dd';
$tab[asia] = 'daa9bda719032ae88abadb9cda4aa846';

If ($tab[$_SERVER['PHP_AUTH_USER']] != md5($_SERVER['PHP_AUTH_PW']) || !isset($_SERVER['PHP_AUTH_USER']))
	{
	header("WWW-Authenticate: Basic realm=Logowanie do systemu");
	header("HTTP/1.0 401 Unauthorized");
	echo 'błąd logowania';
	exit();
	}
echo 'zalogowany';
Stan zalogowania trwa do zamknięcia okna przeglądarki.
RkBlog

Podstawy PHP, 14 July 2008, Piotr Maliński

Comment article