Uwierzytelnianie HTTP – zabezpieczenie strony hasłem
W wielu przypadkach przy projektowaniu stron internetowych dostęp do niektórych skryptów (np. panelu administracyjnego) należy ograniczyć. Najprostszą i najpopularniejszą metodą jest wymóg podania login i hasła. Problem ten można rozwiązać na dwa sposoby. Możemy napisać skrypty PHP odpowiedzialne za rejestracje nowych internautów, logowanie ich itd. lub skorzystać z uwierzytelnienia HTTP, co daje nam praktycznie takie same efekty pisząc tylko kilka linijek kodu.
Niestety rozwiązanie to ma jedną bardzo poważną wadę, a mianowicie nie mamy możliwości wylogowywania się.
Na samym początku skryptu PHP (pliku strony WWW), do którego chcemy zablokować dostęp należy umieścić taki kod:
header('HTTP/1.1 401 Unauthorized'); header('WWW-Authenticate: Basic realm="Jakaś nazwa"'); exit('Musisz podać hasło'); //pobieramy podane hasło i login $username = $_SERVER['PHP_AUTH_USER']; $password = $_SERVER['PHP_AUTH_PW']; //sprawdzamy czy hasło i login się zgadzają pobierając z bazy danych odpowiednie dane $query = "SELECT username FROM user WHERE username = '" . $username . "' AND password = "' . $password . "'"; $data = mysqli_query($dbc, $query) or die('Błąd w zapytaniu do bazy'); if (mysqli_num_rows($data) == 1) { //dane się zgadzają echo 'Jesteś zalogowany jako ' . $username; //dalszy kod skryptu oraz kod HTML - zostanie on wyświetlony tylko w tedy kiedy internauta się zaloguje } else { exit ('Login lub hasło jest niepoprawne'); }
Dal większego bezpieczeństwa zalecamy zaszyfrowanie haseł używając algorytmu MD5 poprzez funkcję PHP –md5('string'); Oczywiście dane takie jak login czy hasło, mogą być zapisane wcześniej w jakiejś zmiennej lub w innym miejscu, a nie w bazie MySQL.