Авторизация
Что такое авторизация? Это однозначное определение пользователя, что бы не путать его с другими и соответственно наделять правами в зависимости от уровня доступа.
Как будет проходить авторизация?
План действия:
1. Пользователь заходит на страницу.
2. Проверяем поступление события от действий пользователя.
2.1 Пришла команда методом POST/GET о том что надо авторизовать пользователя
2.1.1 Проверим пришедшие данные по списку зарегистрированных пользователей.
2.1.2 В случае совпадения с одним из пользователей передадим в сессию уникальный
идентификатор, что бы в дальнейшем скрипт по нему различал авторизованного от не авторизованного.
2.2 Пришла команда разлогинить пользователя
2.2.1 Удалим иидентификатор различия между авторизованным пользователеи и не авторизованным.
3. Скрипт определяет авторизован пользователь или нет
Дальше есть 2 варианта
4. Если пользователь авторизован
4.1 Строим форму с возможностью выйти из системы
5. Если пользователь не авторизован
5.1 Строим форму для ввода логина и пароля
От теории к практике!
создаем файл index.php данного содержимого
Что такое авторизация? Это однозначное определение пользователя, что бы не путать его с другими и соответственно наделять правами в зависимости от уровня доступа.
Как будет проходить авторизация?
План действия:
1. Пользователь заходит на страницу.
2. Проверяем поступление события от действий пользователя.
2.1 Пришла команда методом POST/GET о том что надо авторизовать пользователя
2.1.1 Проверим пришедшие данные по списку зарегистрированных пользователей.
2.1.2 В случае совпадения с одним из пользователей передадим в сессию уникальный
идентификатор, что бы в дальнейшем скрипт по нему различал авторизованного от не авторизованного.
2.2 Пришла команда разлогинить пользователя
2.2.1 Удалим иидентификатор различия между авторизованным пользователеи и не авторизованным.
3. Скрипт определяет авторизован пользователь или нет
Дальше есть 2 варианта
4. Если пользователь авторизован
4.1 Строим форму с возможностью выйти из системы
5. Если пользователь не авторизован
5.1 Строим форму для ввода логина и пароля
От теории к практике!
создаем файл index.php данного содержимого
<?php session_start(); $demo_password = 'admin'; $demo_login = 'admin'; $action=!empty($_POST['action'])?$_POST['action']:'index'; if ($action=='login'){ $user=$_POST['user']; $pass=$_POST['pass']; if ((!empty($user))&&(!empty($pass))){ if (($user==$demo_login)&&($pass==$demo_password)){ $_SESSION['login']['user']=$user; $_SESSION['login']['id']='123'; $_SESSION['login']['session']=session_id(); $action='index'; } } else {$action='index';} } if($action=='logout'){ unset($_SESSION['login']); $action='index'; } $authorize=false; if (!empty($_SESSION['login']['session'])&&(!empty($_SESSION['login']['id']))){ $authorize=true; } if($action=='index'){ if (!$authorize){ print " <form method=post> <input type='hidden' name='action' value='login'> <label>Пользователь</label><input type='text' name='user'><br> <label>Пароль</label><input type='text' name='pass'><br> <input type='submit' value='login'> </form> "; } if($authorize){ print " <form method=post> <input type='hidden' name='action' value='logout'> Пользователь: {$_SESSION['login']['user']}<br> <input type='submit' value='exit'> </form> "; } } Теперь рассмотрим детально что за чем делается:
session_start() - при заходе на страницу стартуем сессию, так как в ней будем хранить данные о авторизации
$demo_password = 'admin'; $demo_login = 'admin'; $action=!empty($_POST['action'])?$_POST['action']:'index';Тут мы для демонстрации создали некие данные для пользователя и пароля, а так же получили переданное пользователем действие, если таковое имеет место быть.Никогда в реальном проекте не храните данные авторизации в коде и тем более без защиты. Тут используется исключительно демонстрация.
if ($action=='login'){ $user=$_POST['user']; $pass=$_POST['pass']; if ((!empty($user))&&(!empty($pass))){ if (($user==$demo_login)&&($pass==$demo_password)){ $_SESSION['login']['user']=$user; $_SESSION['login']['id']='123'; $_SESSION['login']['session']=session_id(); $action='index'; } } else {$action='index';} }В данном блоке мы определяем, что от пользователя пришло событие указывающее на то что пользователь передал свои учетные данные и хочет авторизоваться.После считываем переданное имя пользователя и переданный пароль.Проверяем что бы они не были пустыми.После чего в сессии создаем структуру для хранения информации о пользователеЧто бы каждый раз не обращаться в базу имя пользователя будем хранить в сессии $_SESSION['login']['user']=$user;Что бы унифицировать пользователя будем хранить его id из базы данных и код сессии который было бы правильно записать в базу данных при авторизации, что бы исключить возможность подмена сессии. $_SESSION['login']['id']='123'; $_SESSION['login']['session']=session_id();Когда все действия выполнены то можно переходить к строительству формы $action='index'; if($action=='logout'){ unset($_SESSION['login']); $action='index'; }Если от пользователя пришла команда выхода из системы, то очистим структуру которая отвечает за хранение данных о пользователе и перейдем к строительству формы $authorize=false; if (!empty($_SESSION['login']['session'])&&(!empty($_SESSION['login']['id']))){ $authorize=true; } Данный блок отвечает за проверку правильности введенных авторизационных данных в сессии. $authorize=true; Необходимо выполнять только после того как считали из базы данных записанную туда ранее сессию и сравнили с текущей, это необходимо что бы исключить подмену сессии. Но так как это демонстрация то тут стоит простая заглушка дабы уменьшить количество кода. if($action=='index'){ if (!$authorize){ Тут у нас строится форма авторизации, что бы пользователь мог ввести имя и пароль. Кроме того передается скрытое поле для команды login. print " <form method=post> <input type='hidden' name='action' value='login'> <label>Пользователь</label><input type='text' name='user'><br> <label>Пароль</label><input type='text' name='pass'><br> <input type='submit' value='login'> </form>"; } if($authorize){ Тут строится форма выхода из системы, что бы пользователь мог разлогинится. Так же передается скрытый параметр с командой logout который в скрипте очистит сессию. print " <form method=post> <input type='hidden' name='action' value='logout'> Пользователь: {$_SESSION['login']['user']}<br> <input type='submit' value='exit'> </form>";} } Ну вот собственно это и есть самая простая авторизация пользователя.В этой статье мы на этом остановимся. Дальше у нас будет на много больше интересного: Авторизация используя Ajax Авторизация с хранением данных в базе данныи
И многое другое! Оставайтесь с нами!
Комментариев нет:
Отправить комментарий