Аутентификация пользователей
Практический метод выбора между файлом и базой данных гласит: если вы собираетесь хранить и производить поиск в более чем 100 элементах, следует отдать предпочтение базе данных. После того как пользователь заполнит текстовые поля и нажмет кнопку «Отправить», браузер обратится к сценарию hello. php и передаст их в строке параметров. В атрибуте action тега. Пользователь может в удобной форме ввести… Читать ещё >
Аутентификация пользователей (реферат, курсовая, диплом, контрольная)
АУТЕНТИФИКАЦИЯ ПОЛЬЗОВАТЕЛЕЙ
Лекция Подготовлена Прохоровым В.С.
Просьба к пользователю доказать свою личность называется аутентификацией.
Обычный метод аутентификации в Web — это требование к посетителям предоставить уникальное имя пользователя и пароль. Аутентификация используется для разрешения или запрещения доступа к определенным страницам или ресурсам. Аутентификация может быть необязательной либо использоваться для других целей, например, для персонализации.
1. Форма для передачи данных
Пользователь может в удобной форме ввести уникальное имя и пароль с помощью HTML-документа index.html с элементами диалога — текстовыми полями и кнопкой.
Листинг index.html. Страница с формой
Пожалуйста зарегистрируйтесь
Зарегистрировавшись, Вы получите доступ к защищенной странице.
Имя и Пароль можно получить у администратора.
После того как пользователь заполнит текстовые поля и нажмет кнопку «Отправить», браузер обратится к сценарию hello.php и передаст их в строке параметров. В атрибуте action тега
Листинг secretdb.php — сценарий извлечения текста из полей формы и сравнение его с текстом из базы данных
if (!isset ($_POST['login'])&&!isset ($_POST['pass']))
{
//Посетитель должен ввести имя и пароль
?>
MySQL
Пожалуйста зарегистрируйтесь
Зарегистрировавшись, Вы получите доступ к защищенной странице.
Имя и Пароль можно получить у администратора.
}
else
{
//Подключиться к MySQL
$mysql=mysql_connect ('localhost','root','');
if (!$mysql)
{
echo 'К базе данных не удалось подключиться.';
exit;
}
//Выбрать нужную базу данных
$mysql = mysql_select_db('auth');
if (!$mysql)
{
echo 'Нужную базу данных не удалось выбрать.';
exit;
}
//Запрос к базе данных для проверки, существует ли соответствующая запись
$query = «select count (*) from auth where
login = $_POST['login'] and
pass = $_POST['pass']" ;
$result = mysql_query ($query);
if (!$result)
{
echo 'Запрос к базе данных не может быть осуществлен.';
exit;
}
$count = mysql_result ($result, 0, 0);
if ($count > 0)
{
//Комбинация имени и пароля посетителя правильная
echo " <h1> Эта страница для зарегистрированных пользователей!</</b>h1>" ;
echo " Мы рады тому, что Вы посетили нашу страничку." ;
}
else
{
// Комбинация имени и пароля посетителя неправильная
echo " <h1> ВНИМАНИЕ!</</b>h1>" ;
echo " Вы ввели неправильно имя и пароль." ;
}
}
?>
Проверка того, что пользователь ввел данные, осуществляется функцией isset.
При создании сценария извлечения текста из полей формы hello.php применена инструкция if-else.
Инструкция if-else — условный оператор. Его формат таков:
if (логическое_выражение)
инструкция1;
else
инструкция2;
Действие инструкции следующее: если логическое_выражение истинно, то выполняется инструкция1, а иначе — инструкция2.
Как и в любом другом языке, конструкция else может опускаться. В этом случае при получении ложного значения просто ничего не делается.
В качестве логического выражения применена логическая функция isset, которая проверяет, установлена ли переменная, логический оператор для проверки булевых условий НЕ (!) и И (and или &&):
(!isset ($_POST ['login'])&&!isset ($_POST ['pass']))
Листинг secretdb.php — применение MySQL для улучшения механизма аутентификации.
$name = $_POST['name']
$password = $_POST['password']
if (!isset ($name)&&!isset ($password))
{
//Если имя и пароль не существуют, посетитель должен зарегистрироваться, т. е. ввести имя и пароль
?>
<h1>Пожалуйста зарегистрируйтесь</</b>h1>
<p>Зарегистрировавшись, Вы получите доступ к защищенной странице.</</b>p>
}
else
{
//Подключиться к MySQL
$mysql = mysql_connect('localhost', 'root', '');
if(!$mysql)
{
echo ' К базе данных не удалось подключиться.';
exit;
}
//Выбрать нужную базу данных
$mysql = mysql_select_db('auth');
if(!$mysql)
{
echo ' Нужную базу данных не удалось выбрать.';
exit;
}
//Запрос к базе данных, чтобы проверить, существует ли соответствующая запись
$query = «select count (*) from auth where
name = '$name' and
pass = '$password'" ;
$result = mysql_query ($query);
if (!$result)
{
echo ' Запрос к базе данных не может быть осуществлен.';
exit;
}
$count = mysql_result ($result, 0, 0);
if ($count > 0)
{
//Комбинация имени и пароля посетителя правильная
echo " <h1> Эта страница для зарегистрированных пользователей!</</b>h1>" ;
echo " Мы рады тому, что Вы посетили нашу страничку." ;
}
else
{
// Комбинация имени и пароля посетителя неправильная
echo " <h1> ВНИМАНИЕ!</</b>h1>" ;
echo " Вы ввели неправильно имя и пароль." ;
}
}
?>
Используемую в примере базу данных можно создать, подключившись к MySQL как пользователь root и запустив показанный в листинге 14.3 сценарий.
Листинг 14.3. createauthdb. php —запросы для создания базы данных auth, таблицы auth и двоих пользователей.
create database auth;
use auth;
create table auth (
name varchar (10) not null,
pass varchar (30) not null,
primary key (name)
);
insert into auth values
('user', 'pass');
insert into auth values
('testuser', password ('test123'));
grant select, insert, update, delete
on auth.*
to webauth@localhost
identified by 'webauth';