Сессии

Настройка

Протокол HTTP не имеет средств для хранения своего состояния. Сессии - способ сохранения информации (например, ID залогиненного пользователя) между отдельными HTTP-запросами. Октябрь поставляется со множеством различных механизмов сессий, доступных через единое API. Изначально существует поддержка таких систем, как Memcached, Redis и СУБД.

Настройки сессии находятся в файле 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']);