Аутентификация пользователя

Правильно введенные имя и пароль открывают пользователю доступ к каталогам сервера. Этот принцип аутентификации обычно называется схемой «запрос/ответ». Запросом является приглашение к вводу имени и пароля, а ответом - введенные данные. Если введенная комбинация верна, пользователю предоставляется доступ к защищенным каталогам.

Как правило, для ввода имени и пароля применяются диалоговые окна, активизируемые вызовом функции header( ).

Следующим шагом после подготовки интерфейса для ввода является обработка имени пользователя и пароля. В РНР имя и пароль хранятся в двух глобальных переменных, $PHP_AUTH_USER (имя) и $PHP_AUTH_PW (пароль). В простейшей, но недостаточно гибкой схеме ограничения доступа к странице имя пользователя и пароль жестко кодируются в сценарии:

if ((!isset ($PHP_AUTH_USER)) || (!isset ($PHP_AUTH_PW)) ||

($PHP_AUTH_USER != 'login') || ($PHP_AUTH_PW != 'parol'))

{ header( 'WWW-Authenticate: Basic realm="Secret Family Recipes"');

header ('HTTP/1.0 401 Unauthorized'); print "Неверно указан логин и/или пароль!";

exit;

}

Пример, чтение аутентификационных данных из текстового файла (authenticate.txt). В каждой строке файла содержится отдельная пара «имя:пароль»; в процессе проверки программа последовательно читает и проверяет все строки файла:

$file = "authenticate.txt"; $fp = fopen($file, "r");

$auth_file = fread ($fp, filesize($fp)); fclose($fp); $authorized = 0;

$elements = explode ("\n", $auth_file); // Сохранить строки файла в виде элементов массива

foreach ($elements as $element)

{ list ($user, $pw) = split (":", $element);

if (($user == $PHP_AUTH_U$ER) && ($pw== $PHP_AUTH_PW))

{ $authorized = 1; break; }

}

if (! $authorized)

{ header('WWW-Authenticate: Basic realm="Secret Family Recipes'");

header('HTTP/1.0 401 Unauthorized'); print "Неверный логин и/или пароль"; exit;

}

else print "Приветствую Вас!";

Пример программы аутентификации пользователя c аутентификацион-ными данными в демонстрационной таблицей (user_authenticate) в базе данных (useMnfo) с полями: userid, username, password.

if (!isset($PHP_AUTH_USER))

{ header( 'WWW-Authenticate: Basic realm="Secret Family Recipes'");

header('HTTP/1.0 401 Unauthorized'); exit;

}

else

{ mysql_connect ("host", "user", "password")

or exit ("Ошибка при подключении!"); // Создать содинение с базой данных MySQL

mysql_select_db ("useMnfo")or exit ("Ошибка при открытии базы данных!");

// Обратиться к таблице user_authenticate для поиска совпадающей строки

$query = "select userid from user_authenticate whereusername = '$PHP_AUTH_USER' and

password = '$PHP_AUTH_PW'"; $result = mysql_query (Squery):

// Если совпадение не найдено, вывести окно аутентификации

if (mysql_numrows($result) != 1)

{ header('WWW-Authenticate: Basic realm="Secret Family Recipes'");

header ('HTTP/ 1.0 401 Unauthorized'); exit;

}

// Если проверка пройдена, получить идентификатор пользователя

else $userid = mysql_result (user_authenticate, 0, $result);

}


2.15. Рекомендации








Дата добавления: 2015-04-15; просмотров: 900;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.01 сек.