Что такое сессия на сайте
Сессией называется время от входа пользователя на ресурс до выхода. Иногда требуется контролировать действия пользователя при переходах на разные страницы, идентифицировать его, проверить, заходил ли пользователь на сайт ранее, вводился ли пароль и так далее. Для правильного осуществления этих задач нужно знать, что такое сессионные переменные.
Сессионные переменные – особый массив глобальных переменных ($_SESSION) для идентификации пользователя или для выполнения специальных задач на сайте. Они могут использоваться в работе интернет-магазина (для оформления заказа), входа на конфиденциальную часть сайта, требующую защиты паролем, защиты интерактивной части сайта от спама и других подобных операций.
Сессионные переменные и Cookies
В веб-программировании имеются два механизма идентификации сессий – cokies и сессионныeпеременныe. Использование cookies не всегда удобно, так как этот механизм может быть отключен на сайте пользователя. Тогда возможно неполное функционирование сайта, то есть с открытием каждой новой страницы система будет “забывать” пользователя. С этой точки зрения предпочтительно использовать сессионные переменные.
Кроме того, данные cookies находятся на компьютере у пользователя, что с точки зрения безопасности не всегда правильно. Ведь пользователь может самостоятельно изменять данные cookies. Сессионные переменные хранятся на стороне сервера, что повышает уровень безопасности сайта.
Где расположены и как используются сессионные переменные
Сессионные переменные хранятся в глобальном массиве $_SESSION. Для начала работы необходим вызов PHP-функции session_start(). При этом создается временный файл, где хранятся сессионные переменные. При начале новой сессии создается новый файл, что позволяет отслеживать действия каждого посетителя. Ведь прямой связи между сервером и браузером не существует, поэтому при каждом новом запросе сессия будет подтверждаться. Существует два механизма поддержки сессий – через создание cookies-файла типа PHPSESSID=af9657fa55493d16d786234faf4ae56b (идентификатора сессии) или при помощи запроса GET.
Пример использования сессии
Ввод новой переменной в существующую сессию осуществляется функцией $_SESSION[‘name’] = “value”. После этого на любой странице, где используется открытие сессии, можно извлекать из массива и использовать любую из сессионных переменных. К примеру, на одной из страниц будет введен скрипт
session_start();
$_SESSION[‘newname’] = “Vova”;
echo ‘Привет, ‘.$_SESSION[‘newname’];
На странице отобразится “Привет, Vova!”
А после открытия другой страницы того же сайта с кодом
session_start();
echo $_SESSION[‘newname’].’ , попал на другую страницу!’;
отобразится “Vova попал на другую страницу”.
Закрытие сессии
Сессия по умолчанию сессия через определенное время (обычно 24 минуты) после закрытия браузера. Однако может быть задано другое время (в секундах) жизни сессии, которое указывается в файлеphp.ini (session.cookie_lifetime = 0). Также сессию можно принудительно удалить вызовом функции session_destroy() или session_write_close().
Недостатки использования сессий
При старте сессии создается уникальный идентификатор, добавляющийся к URL страниц, на которых был пользователь. К недостаткам такого подхода относится возникновение ошибок при индексации страниц поисковыми системами. Система может воспринять страницы с сессионным идентификатором как дубликаты и в результате понизить их поисковую выдачу.