Академический Документы
Профессиональный Документы
Культура Документы
Хранение состояния и
аутентификация
План вебинара
План вебинара
– Отслеживание активности
Счетчики. Узнать сколько раз пользователь заходил на
ваш сайт и какие страницы смотрел
– Кастомизация
Сохранение для пользователя выбранного языка,
страны, других настроек
– Идентификация
Дать доступ к закрытым разделам сайта
зарегистрированным пользователям
Добавление в избранное
Добавление в избранное
Добавление в избранное
Host: giftube.academy
User-Agent: Chrome 60 Браузер добавляет куку к
Cookie: gifs_fav=15,24,56 остальным заголовкам запроса
Accept: text/html
Как сервер получает cookie
Host: giftube.academy
User-Agent: Chrome 60 Браузер добавляет куку к
Cookie: gifs_fav=15,24,56 остальным заголовкам запроса
Accept: text/html
Set-Cookie:
NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME;
Из чего состоят cookies
Set-Cookie:
NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME;
Set-Cookie:
NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME;
Set-Cookie:
NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME;
Set-Cookie:
NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME;
Set-Cookie:
NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME;
• strtotime($date)
переводит дату из человеческого описания в формат для cookies
Работа с cookies в PHP
Нам понадобятся следующие функции:
• strtotime($date)
переводит дату из человеческого описания в формат для cookies
• strtotime($date)
переводит дату из человеческого описания в формат для cookies
<?php
if (isset($_COOKIE['visitcount'])) {
print $_COOKIE['visitcount'];
}
Работа с cookies в PHP
Чтение куки
<?php
if (isset($_COOKIE['visitcount'])) {
print $_COOKIE['visitcount'];
}
<?php
if (isset($_COOKIE['visit_count'])) {
unset($_COOKIE['visit_count']);
setcookie('key', '', time() - 3600, '/');
}
Как удалить cookie
Очистить массив $_COOKIES и послать заголовок, который
удалит куку из браузера
<?php
if (isset($_COOKIE['visit_count'])) {
unset($_COOKIE['visit_count']);
setcookie('key', '', time() - 3600, '/');
}
Достоинства
Достоинства Недостатки
Преимущества:
• абстракция над cookies
• могут хранить любые объемы и типы данных
Что такое сессии
Сессии – это не стандарт и не часть протокола, а
понятие из языка PHP, надстройка над обычными cookies
Преимущества:
• абстракция над cookies
• могут хранить любые объемы и типы данных
Особенности:
• живут только внутри одного сеанса
• хранят данные в файлах (по умолчанию)
• требуют для своей работы cookies
Как работают сессии
Как работают сессии
PHP генерирует случайный идентификатор сессии на
1 основе данных пользователя
Как работают сессии
PHP генерирует случайный идентификатор сессии на
1 основе данных пользователя
root@localhost:/var/lib/php/sessions# ls –la
<?php
ini_set('session.cookie_lifetime', 86400);
ini_set('session.gc_maxlifetime', 86400);
Перерыв на 10 минут
Сравнение сессий и cookies
Куки Сессии
Тип хранимых данных только простые строки строки, массивы, числа, объекты
Cookies
Cookies Сессии
<?php
session_start();
if (isset($_SESSION['username'])) {
print($_SESSION['username']);
}
$_SESSION['username'] = "Вася";
Практика работы с сессиями
Обязательно при использовании сессий
<?php
session_start();
if (isset($_SESSION['username'])) {
print($_SESSION['username']);
}
$_SESSION['username'] = "Вася";
Практика работы с сессиями
Обязательно при использовании сессий
<?php
session_start();
if (isset($_SESSION['username'])) {
print($_SESSION['username']);
}
чтение значения из сессии
$_SESSION['username'] = "Вася";
Практика работы с сессиями
Обязательно при использовании сессий
<?php
session_start();
if (isset($_SESSION['username'])) {
print($_SESSION['username']);
}
чтение значения из сессии
$_SESSION['username'] = "Вася";
$_SESSION = [];
Аутентификация
процедура проверки логина и пароля пользователя
Анонимный
1. Смотреть гифки
Как делить пользователей
Сайт может предоставлять залогиненным пользователям
дополнительные возможности
Анонимный С аккаунтом
Главная
Добавление Просмотр
Gif Tube
Избранное Регистрация
Категория
Закрытая часть сайта
Главная
Добавление Просмотр
Gif Tube
Избранное Регистрация
Категория
Закрытая часть сайта
Главная
Добавление Просмотр
Gif Tube
Избранное Регистрация
Категория
Где используется аутентификация
Где используется аутентификация
Авторизация это…
Логин igor89
Обязательные поля регистрации
Логин igor89
Логин igor89
Пароль ********
Обязательные поля регистрации
Логин igor89
Пароль ********
Логин igor89
Пароль ********
E-mail igorek_89@rambler.ru
Обязательные поля регистрации
Логин igor89
Пароль ********
E-mail igorek_89@rambler.ru
«гладиолус»
Что такое отпечаток пароля
«гладиолус»
«гладиолус» «b328e34e4484a2f9fc194388ebdc5790»
abc123
*******
*******
$2y$10$Oqvs…
юзер
форма входа
Обзор всего процесса
Аутентификация и авторизация на сайте
юзер показать
форму
форма входа
Обзор всего процесса
Аутентификация и авторизация на сайте
валидация
юзер показать
форму
форма входа
Обзор всего процесса
Аутентификация и авторизация на сайте
валидация
форма входа
Обзор всего процесса
Аутентификация и авторизация на сайте
валидация
форма входа
Обзор всего процесса
Аутентификация и авторизация на сайте
валидация
Получить данные
из формы
Да Нет
Нашли?
Редирект на главную
Проверка пароля пользователя
Проверка пароля пользователя
1. Найти пользователя (в массиве или из базы данных)
по переданному логину/email
Проверка пароля пользователя
1. Найти пользователя (в массиве или из базы данных)
по переданному логину/email
?
Как запретить анонимным
пользователям посещать некоторые
страницы?
Ограничение доступа к страницам
?
Как запретить анонимным
пользователям посещать некоторые
страницы?
?
Как запретить анонимным
пользователям посещать некоторые
страницы?
<?php
if (!isset($_SESSION['user'])) {
header("Location: /");
exit();
}
Скрытие информации со страницы
В зависимости от статуса пользователя (залогинен или нет)
можно показывать разную информацию на странице
Скрытие информации со страницы
В зависимости от статуса пользователя (залогинен или нет)
можно показывать разную информацию на странице
Анонимный пользователь
<?php
unset($_SESSION['user']);
header("Location: /index.php");
Восстановление пароля
возможность пользователю восстановить забытый
пароль, используя свой e-mail
Как работает восстановление пароля
Как работает восстановление пароля