Практична №4
Практичне №4
Створення системи авторизації користувачів.
Спочатку нам потрібно створити таблицю з логінами та паролями користувачів, наприклад такого виду.
CREATE TABLE `labu`.`users` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(128) NOT NULL ,
`email` VARCHAR(128) NULL ,
`login` VARCHAR(32) NOT NULL ,
`password` VARCHAR(32) NOT NULL ,
PRIMARY KEY (`id`) ,
UNIQUE INDEX `id_UNIQUE` (`id` ASC) );
Та заповнимо її данними:
INSERT INTO `labu`.`users` (`name`, `email`, `login`, `password`) VALUES ('Администратор', 'admin@yourportal.com', 'admin', '111');
INSERT INTO `labu`.`users` (`name`, `email`, `login`, `password`) VALUES ('Вася', 'vasiliy@mail.ru', 'vasya', '222');
INSERT INTO `labu`.`users` (`name`, `email`, `login`, `password`) VALUES ('Петя', 'petro@ukr.net', 'petya', '333');
Тепер нам потрібна форма для входу користувача:
Код такої форми може мати вигляд:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Авторизація</title>
</head>
<body>
<p style="background-color: #C0C0C0; font-family: Arial, Helvetica, sans-serif; font-weight: bold; font-style: italic; color: #000080;" align="center">Авторизуватися</p>
<table style="width: 100%">
<tr>
<td style="font-family: Arial, Helvetica, sans-serif; vertical-align: top;">
Логін:<br/>Пароль:
</td>
<td><form method="post" action="login.php">
<input name="login" type="text" /><br/>
<input name="passw" type="password" /><br/>
<input name="submit" type="submit" value="Вхід" />
</form>
</td>
</tr>
</table>
</body>
</html>
Тепер потрібно написати обробник для форми, який буде на основі таблиці приймати рішення пропустити користувача в систему чи ні.
Його можна реалізувати наступним чином:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Вхід в систему</title>
</head>
<?php
$db = mysql_connect("localhost", "root", "fjrud7sg");
mysql_select_db("labu");
mysql_query ("set names 'utf8'") ;
$lgn=$_POST['login'];
$pss=$_POST['passw'];
$res = mysql_query("select count(*) as 'cnt',`name` from `users` where (`login`='".$lgn."')and(`password`='".$pss."');");
if ($row = mysql_fetch_array($res))
{
$cnt=$row['cnt'];
$nam=$row['name'];
if ($cnt==1)
{
session_start();
$_SESSION['user']=$lgn;
$_SESSION['name']=$nam;
echo "<p>Дброго дня ".$nam.". Ви успішно увійшли до системи. Повернутися на <a href=\"products.php\">головну</a> сторінку.</p>";
} else echo "Помилка. Повторіть <a href=\"auth.html\">вхід</a>.";
}
mysql_close($db);
?>
<body>
</body>
</html>
Даний обробник повідомляє про успішний/неуспішний вхід, та пропонує перейти на головну сторінку сайту.
Тепер нам потрібно ще дві php програми перша – вихід з системи, друга – перевіряє чи користувач здійснив вхід до системи і чи потрібно його пропускати на ту чи іншу сторінку.
Вихід з системи можна реалізувати так:
<?php
session_start();
unset($_SESSION['login']);
unset($_SESSION['name']);
echo "Ви вийшли з системи. <a href=\"auth.html\">Натисніть</a> щоб ввійти знову.";
?>
Перевірку користувача так:
<?php
session_start();
if ((isset($_SESSION['user']))&&(isset($_SESSION['name'])))
{
echo "Ви авторизовані, як ".$_SESSION['user']." <a href=\"Вихід\">";
} else
{
echo "Вам потрібно <a href=\"auth.html\">авторизуватись</a>.";
die();
}
?>
Тепер для того, щоб перевірити чи користувач зайшов до системи, і якщо так, то ,наприклад, дозволимо йому записати новий товар.
Тобто нам в коді програми compleate_add.php потрібно перед процедурою додання прописати require('check_auth.php'); який перевірить користувача і або продовжить, або припинить процес додання товару у каталог.