Для начала немного теории о том, что такое сессии. В PHP они работают следующим образом:
$_SESSION
.
Сохраненные в сессию данные хранятся на сервере в виде дисковых файлов.$_SESSION
. 49) Cookie в HTTP - это небольшой фрагмент данных, отправленный веб-сайтом и хранящийся в браузере пользователя в то время, как он просматривает сайт. Cookie используются для сохранения какого-то состояния между HTTP-запросами.
С точки зрения разработчика PHP-приложения, работать с сессиями просто. Сперва вы инициализируете сессию, вызвав
функцию session_start()
. Затем воспользуйтесь суперглобальным массивом $_SESSION
для задания/извлечения данных сессии.
Например, для сохранения каких-либо данных в сессию, используйте следующий код:
session_start();
$_SESSION['my_var'] = 'Some data';
Чтобы затем извлечь данные из сессии, используйте данный код:
session_start();
if (isset($_SESSION['my_var']))
$sessionVar = $_SESSION['my_var'];
else
$sessionVar = 'Some default value';
Для очистки данных используйте функцию PHP unset()
как показано ниже:
unset($_SESSION['my_var']);
Обратите внимание, PHP-сессии не вечны (срок их действия рано или поздно заканчивается: тогда, когда заканчивается
срок действия cookie пользователя, либо когда PHP-движок очищает файлы хранилища сессии). То, как долго будет длиться
сессия, определяется в файле конфигурации php.ini. С помощью функции ini_set()
возможно переопределить стандартные
параметры срока действия, как показано ниже:
// Задаем время "жизни" cookie сессии (в секундах), равное 1 часу.
ini_set('session.cookie_lifetime', 60*60*1);
// Храним данные сессии на сервере до 1 месяца.
ini_set('session.gc_maxlifetime', 60*60*24*30);
В php.ini также существует несколько других, расширенных настроек конфигурации PHP, связанной с сессиями. Так как ими пользуются редко, мы не будем их рассматривать.
Итак, если сессии настолько простые, зачем мне использовать предоставляемую Zend Framework 3 обертку?
Эта обертка для PHP-сессий полезна, потому что:
- она объектно-ориентирована, что значит, она хорошо подходит для вашего MVC-приложения.
- ZF3 предоставляет концепцию пространств имен сессии, таким образом, разные модели могут хранить данные без конфликтов имен.
- ZF3 предоставляет механизмы безопасности (валидаторы сессии), так что недоброжелателям сложнее взломать и подменить ваши данные сессий.
- Использование суперглобального массива
$_SESSION
напрямую не очень хорошая идея, так как это усложняет процесс тестирования сайта. При использовании обертки проще подавать тестовые данные.- С помощью классов сессий ZF3 можно реализовать пользовательске хранилища данных сессий (например, можно хранить данные сессий не в файлах, а в базе данных).