Сообщение об ошибке

Deprecated function: The each() function is deprecated. This message will be suppressed on further calls в функции menu_set_active_trail() (строка 2405 в файле /home/kpaco123/e-helper/includes/menu.inc).

Практична №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'); який перевірить користувача і або продовжить, або припинить процес додання товару у каталог.

Файл: