ресурс для начинающих веб-разработчиков
комплексные веб-услуги по созданию сайтов

Справочный материал по основным языкам программирования и верстки сайтов.

Готовая методика создания простых и сложных динамичных сайтов, с использованием PHP и MySQL.

Использование веб-редактора Adobe Dreamweaver в разработке сайтов.

Использование графических редакторов Adobe Flash, Adobe Photoshop, Adobe Fireworks в подготовке веб-графики.

Разработка веб-сайтов под "ключ".

Разработка отдельных фрагментов сайтов, консультации по вопросам верстки веб-страниц и веб-программирования.

Аутентификация с помощью PHP и MySQL. Идентификация посетителей. Реализация контроля доступа

Аутентификация

Веб — это достаточно анонимная среда, однако часто полезно знать, кто конкретно посетил ваш сайт. К счастью для конфеденциальности посетителей, без их содействия можно получить только очень незначительную информацию.

Приложив некоторые усилия, серверы могут получить достаточно много информации о соединенных с ними компьютерах и сетях. Обычно веб-браузер идентифицирует себя, указывая свой тип, версию и операционную систему, под управлением которой он выполняется. Существует возможность с помощью JavaScript определить разрешение и цветовую глубину, установленные на мониторах посетителей, а также размеры окон браузеров.

Каждый подключенный к Интернет компьютер имеет уникальный IP-адрес. Из IP-адреса посетителя можно извлечь определенную информацию. Можно узнать, кто владеет адресом, а иногда, с некоторой долей вероятности, можно предположить географическое местоположение посетителя. Одни адреса предоставляют большую информацию, нежеле другие. В основном, те, кто использует постоянное подключение к Интернет, обладают постоянными IP-адресами. В тоже время, в большинстве случаев клиенты, которые дозваниваются к поставщикам Интернет-услуг, получают один из IP-адресов поставщика во временное пользование. В следующий раз этот адрес может использоваться другим компьютером, и когда вы увидите пользователя, который посещал ваш сайт ранее, у него, возможно, будет другой IP-адрес.

К счастью для пользователей веб, никакая информация, которую выдает браузер, не позволяет установить личность пользователя. Если хотите выяснить личность посетителя и другие сведения, придется спросить его об этом.

Многие веб-сайты вынуждают пользователей предоставлять о себе информацию. В качестве примера можно привести сайты социальных сетей Мой Мир (http://my.mail.ru/), Facebook (http://www.facebook.com/) и другие. Большинство сайтов электронной коммерции записывают сведения о своих клиентах при оформлении первого заказа. Это означает, что покупателю не придется вводить информацию о себе в каждом будущем заказе.

Запросив и получив в ответ информацию о посетителе, ее необходимо каким-то образом связать с посетителем при его последующих посещениях сайта. Если предположить, что с определенного компьютера, используя определенное имя пользователя на этом компьютере, на сайт заходит только один пользователь, а каждый пользователь работает только на одном компьютере, то для идентификации пользователя можно создать cookie-набор на компьютере пользователя. Для большинства пользователей подобное предположение неверно. Часто многие люди совместно пользуются одним и тем же компьютером, а многие используют несколько компьютеров. По крайней мере, иногда приходится повторно спрашивать пользователя о том, кто он такой. Кроме того, придется попросить посетителя предоставить определенные доказательства того, что он тот, за кого себя выдает.

Предложение пользователю подтвердить свою личность называется аутентификацией. Обычный метод аутентификации в веб сводится к требованию к посетителям предоставить уникальное имя пользователя и пароль. Аутентификация обычно служит для разрешения или запрещению доступа к определенным страницам или ресурсам. Аутентификация может быть необязательной либо использоваться для других целей, например, для персонализации сайта.

Реализация контроля доступа

Простой контроль доступа реализовать несложно. Код приведенный ниже, выводит одну из трех возможных страниц. Если этот файл загружен без параметров, будет отображаться HTML-форма с приглашением ввести имя пользователя и пароль.

HTML-форма

Если при загрузке параметры присутствуют, но они были введены неправильно, отображается сообщение об ошибке.

Результат обработки HTML-формы

Если эти параметры присутствуют и они правильные, посетителю отображается секретное содержимое.

Результат обработки HTML-формы

secret.php — PHP и HTML-код для реализации простого механизма аутентификации

<?php
//создание коротких имен переменных
@ $name = $_POST[name];
@ $password = $_POST[password];
$title ="Пожалуйста, введите свое имя пользователя и пароль";
if (empty($name)||empty($password))
{
// Посетитель должен ввести имя и пароль
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title><?php echo $title ?></title>
</head>

<body>
<h1><?php echo $title ;?></h1>
<p>Эта страница является секретной.</p>
<form action="secret.php" method="post">
<table width="49%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="27%">Имя пользователя</td>
<td width="73%"><input name="name" type="text" size="25" maxlength="50" /> </td>
</tr>
<tr>
<td>Пароль</td>
<td><input type="password" name="password" size="25" maxlength="50" /></td>
</tr>
<tr>
<td></td>
<td colspan="2">
<input type="submit" name="button" value="Войти" />
</td>
</tr>
</table>

</form>

<?php
}
else if ($name == 'user' && $password == 'pass')
{
// Комбинация имени пользователя и пароля посетителя верна
echo '<h1>Вы зашли на секретную страницу</h1>';
echo 'Добро пожаловать! Имя пользователя и пароль введены правильно';
}
else
{
// Комбинация имени и пароля неверна
echo '<h1>Неправильно введены данные</h1>';
echo 'Вам не разрешено просматривать данный ресурс.';
}
?>
</body>
</html>

Описанный сценарий:

  • поддерживает только одно жестко закодированное имя пользователя и пароль;
  • хранит пароль в виде открытого текста;
  • защищает только одну страницу;
  • передает пароль в виде открытого текста.

Эти проблемы можно разрешить, приложив различные усилия и добиваясь различных успехов.