Сессии
# Настройка
Протокол HTTP не имеет средств для хранения своего состояния. Сессии - способ сохранения информации (например, ID залогиненного пользователя) между отдельными HTTP-запросами. Октябрь поставляется со множеством различных механизмов сессий, доступных через единое API. Изначально существует поддержка таких систем, как Memcached (opens new window), Redis (opens new window) и СУБД.
Настройки сессии находятся в файле config/session.php
. Обязательно просмотрите параметры - они хорошо документированы. По умолчанию October использует драйвер file
, который подходит для большинства приложений.
file
- сессии хранятся вstorage/framework/sessions
.cookie
- сессии хранятся в защищенных и зашифрованных файлах cookie.database
- сессии хранятся в БД.memcached
/redis
- сессии хранятся в одном из хранилищ.array
- сессии хранятся в простом PHP массиве и не будут сохраняться между запросами.
Примечание: драйвер
array
обычно используется для запуска модульных тестов, чтобы предотвратить сохранение данных.
# Зарезервированные ключи
Октябрь использует внутренний ключ flash
, поэтому Вы не можете добавить элемент к сессии с этим ключом.
# Использование сессий
# Сохранение переменной в сессии
Session::put('key', 'value');
# Добавление элемента к переменной-массиву
Session::push('user.teams', 'developers');
# Чтение переменной сессии
$value = Session::get('key');
$value = Session::get('key', 'default');
$value = Session::get('key', function() { return 'default'; });
# Получение всех переменных сессии
$data = Session::all();
# Получение данных и их удаление
$value = Session::pull('key', 'default');
# Проверка существования переменой
if (Session::has('users')) {
//
}
# Удаление переменной из сессии
Session::forget('key');
# Удаление всех переменных из сессии
Session::flush();
# Присвоение сессии нового идентификатора
Session::regenerate();
# Одноразовые flash-данные
Иногда вам нужно сохранить переменную только для следующего запроса - а дальше она должна быть автоматически удалена. Это нужно, например, для передачи ошибок валидации в форму. Вы можете сделать это методом Session::flash
:
Session::flash('key', 'value');
Продление всех одноразовых переменных ещё на один запрос
Session::reflash();
Продление только отдельных переменных
Session::keep(['username', 'email']);