Когда пользователи проектируют и поддерживают сайты, им часто приходится ограничивать доступ к определенным важным файлам или информации. Обычно мы можем использовать механизм аутентификации пользователя на основе протокола HTTP, встроенного в WEB-сервер. Когда посетитель просматривает защищенную страницу, клиентский браузер отображает диалоговое окно с просьбой ввести имя пользователя и пароль для проверки личности пользователя и определения, имеет ли пользователь право доступа к странице. Для иллюстрации принципа его реализации используются два метода.
1. Используйте заголовки HTTP для реализации
заголовков. Заголовок — это строка, отправляемая сервером перед передачей HTML-информации в браузер с использованием протокола HTTP. HTTP использует модель «запрос/ответ» для аутентификации пользователей, пытающихся войти в области, защищенные паролем. В частности, когда пользователь впервые отправляет запрос веб-серверу на доступ к защищенной области, запускается процесс запроса, и сервер возвращает специальный заголовок 401, указывающий, что личность пользователя не проверена. После обнаружения вышеуказанного ответа браузер клиента автоматически открывает диалоговое окно с просьбой ввести имя пользователя и пароль. После того, как пользователь завершит ввод и нажмет «ОК», его идентификационная информация будет отправлена на сервер для проверки. Если имя пользователя и пароль, введенные пользователем, действительны, веб-сервер позволит пользователю войти в защищенную область и поддерживать достоверность своей личности на протяжении всего процесса доступа. Напротив, если имя пользователя или пароль, введенные пользователем, не могут быть проверены, браузер клиента будет постоянно отображать окно ввода с просьбой к пользователю попытаться ввести правильную информацию еще раз. Весь процесс будет продолжаться до тех пор, пока пользователь не введет правильное местоположение информации. Вы также можете установить максимальное количество попыток, которое разрешено сделать пользователю. При превышении запрос на доступ пользователя будет автоматически отклонен.
В PHP-скрипте используйте функцию header() для прямой отправки HTTP-заголовка в браузер клиента, чтобы на клиенте автоматически появлялось окно ввода имени пользователя и пароля для реализации нашей функции аутентификации личности. В PHP информация, введенная пользователем клиента, автоматически сохраняется в трех глобальных переменных $PHP_AUTH_USER, $PHP_AUTH_PW и $PHP_AUTH_TYPE после ее передачи на сервер. Используя эти три переменные, мы можем проверить личность пользователя на основе информации об учетной записи пользователя, хранящейся в файле данных или базе данных.
Однако следует напомнить пользователям, что $PHP_AUTH_USER и $PHP_AUTH_PW можно использовать только в PHP, установленном в качестве модуля. и три переменные $PHP_AUTH_TYPE. Если пользователь использует PHP в режиме CGI, функция проверки не может быть реализована. Способ установки модуля PHP прилагается в конце этого раздела.
Ниже мы используем базу данных Mysql для хранения личности пользователя. Нам нужно извлечь имя пользователя и пароль каждой учетной записи из базы данных, чтобы сравнить их с переменными $PHP_AUTH_USER и $PHP_AUTH_PW, чтобы определить подлинность пользователя.
Сначала создайте базу данных в MySql для хранения информации о пользователе.
Имя базы данных — XinXiKu, а имя таблицы — user; определение таблицы следующее:
create table user(.
ID INT(4) NOT NULL AUTO_INCREMENT,
имя VARCHAR(8) NOT NULL,
пароль CHAR(8) NOT NULL,
ПЕРВИЧНЫЙ КЛЮЧ(ИД)
)
Описание:
1. Идентификатор — это серийный номер, который не равен нулю и автоматически увеличивается. Это первичный ключ.
2. Имя — это имя пользователя и не может быть пустым.
3. Пароль — это пароль пользователя и не может быть пустым.
Ниже приведен файл проверки пользователя. php
//Определите, установлено ли имя пользователя.
если(!isset($PHP_AUTH_USER)) {
header("WWW-Authenticate:Basic Realm="Функция аутентификации"");
заголовок("HTTP/1.0 401 Неавторизованный");
echo "Аутентификация не удалась, у вас нет разрешения на общий доступ к сетевым ресурсам!";
Выход();
}
/*Подключаемся к базе данных*/
$db=mysql_connect("localhost","root","");
//Выбираем базу данных
mysql_select_db("XinXiKu",$db);
//Проверяем, существует ли пользователь
$result=mysql_query("SELECT * FROM user, где name='$PHP_AUTH_USER' и пароль='$PHP_AUTH_PW'",$db);
если ($myrow = mysql_fetch_row($result)) {
//Ниже приведены связанные операции после успешной аутентификации
...
} еще {
//Аутентификация не удалась, предложите пользователю повторить вход
header("WWW-Authenticate:Basic Realm="Функция аутентификации"");
заголовок("HTTP/1.0 401 Неавторизованный");
echo "Аутентификация не удалась, у вас нет разрешения на общий доступ к сетевым ресурсам!";
Выход();
}
?>
Описание программы:
В программе сначала проверьте, установлена ли переменная $PHP_AUTH_USER. Если он не установлен, это означает, что требуется аутентификация. Сценарий отправляет заголовок с номером ошибки HTTP 401, чтобы сообщить браузеру клиента о необходимости аутентификации. Браузер клиента открывает окно аутентификации, предлагая пользователю ввести имя пользователя и имя пользователя. пароль. После завершения ввода базы данных подключения проверьте правильность имени пользователя и пароля. Если они верны, разрешите вход в систему для выполнения соответствующих операций. Если они неверны, продолжайте требовать от пользователя ввода имени пользователя и пароля.
Описание функции:
1. isset(): используется для определения того, присвоено ли переменной значение. В зависимости от того, существует ли значение переменной, возвращайте true или false.
2. header(): используется для отправки определенных заголовков HTTP. Обратите внимание: при использовании функции header() обязательно вызывайте ее перед любым кодом HTML или PHP, который производит фактический вывод.
3. mysql_connect(): откройте соединение с сервером MySQL.
4. mysql_db_query(): отправьте строку запроса (запрос) в базу данных MySQL.
5. mysql_fetch_row(): возвращает каждое поле одного столбца.
2. Используйте сеанс для реализации проверки сервера.
Для страниц, требующих аутентификации, лучше всего использовать проверку сервера Apache. Однако интерфейс проверки сервера Apache недостаточно дружелюбен. Более того, PHP в режиме CGI и PHP в IIS невозможно проверить с помощью сервера Apache. Таким образом, мы можем использовать сеанс для сохранения личности пользователя на разных страницах для проверки личности.
На серверной стороне мы также используем указанную выше базу данных Mysql для хранения информации о пользователях.
Сначала пишем интерфейс входа пользователя, имя файла — login.php, код:
__________________________________________________________
<form action="login1.php">
Имя пользователя:<input type="text" name="name"><br>
Пароль :<input type="text" name="pass"><br>
<input type="submit" value="Login">
</form>
________________________________________________________
login1.php обрабатывает отправленную форму, код следующий:
$ db=mysql_connect("localhost","root","");
mysql_select_db("XinXiKu",$db);
$result=mysql_query("SELECT * FROM user, где name='$name' и пароль='$pass'",$db);
если ($myrow = mysql_fetch_row($result)) {
//Регистрируем пользователя
сеанс_start();
session_register("пользователь");
$user=$myrow["пользователь"];
// Проверка личности прошла успешно, выполните соответствующие операции
...
} еще {
echo "Аутентификация не удалась, у вас нет разрешения на общий доступ к сетевым ресурсам!";
}
?>
Здесь следует отметить, что пользователи могут использовать **http://domainname/next.php?user=username** в последующих операциях для обхода аутентификации. Поэтому последующие операции должны сначала проверить, зарегистрирована ли переменная: если она зарегистрирована, выполнить соответствующую операцию, иначе это будет расценено как незаконный вход. Соответствующий код выглядит следующим образом:
сеанс_start();
if (!session_is_registered("пользователь")){
echo "Ошибка аутентификации, незаконный вход!";
} еще {
//Успешно авторизуемся для выполнения связанных операций
...
}
?>
Приложение: Как установить PHP в режиме модуля
1. Сначала загрузите файл: mod_php4-4.0.1-pl2. [Если у вас не PHP4, обновитесь как можно скорее!]
После распаковки есть три файла: mod_php4.dll, mod_php4.conf, readme.txt
2. Скопируйте соответствующие файлы. Скопируйте
mod_php4.dll в каталог модулей. каталог установки apache.
Скопируйте файл mod_php4.conf в каталог conf каталога установки apache.
Скопируйте файл msvcrt.dll в каталог установки apache.
3. Откройте файл conf/srm.conf и добавьте предложение
Include conf/mod_php4.conf.
для этого удалите все настройки режима CGI в вашем httpd.conf, то есть ту часть, которая аналогична следующей:
ScripAlias /php4/ "C:/php4/"
Приложение AddType/x-httpd-php4.php
Приложение AddType/x-httpd-php4.php3
Приложение AddType/x-httpd-php4 .php4
Действие application/x-httpd-php4 /php4/php.exe
Если вы хотите, чтобы PHP поддерживал больше суффиксов, не проблема. Данный файл конфигурации mod_php4.conf уже поддерживает три суффикса: php, php3 и php4. Если вы хотите поддерживать больше суффиксов, вы можете изменить этот файл. Это очень просто.
4.
Используйте <? phpinfo() ?> для проверки. Вы увидите, что значение API сервера — apache, а не cgi, а также есть информация об информации заголовков HTTP.