Настройка
HTTP-приложения не имеют состояний. Сессии — способ сохранения информации о клиенте между отдельными запросами. Laravel поставляется со множеством различных механизмов сессий, доступных через единое API. Изначально существует поддержка таких систем, как Memcached, Redis и СУБД.
Настройки сессии содержатся в файле app/config/session.php. Обязательно просмотрите параметры, доступные вам — они хорошо документированы. По умолчанию Laravel использует драйвер file (в версии 4.0 драйвер native — прим. пер.), который подходит для большинства приложений.
добавлено в 4.1 ()
Основы использования
Сохранение переменной в сессии
Session::put('key', 'value');
Добавление элемента к переменной-массиву
Session::push('user.teams', 'developers');
$value = Session::get('key');
Чтение переменной или возврат значения по умолчанию
$value = Session::get('key', 'default');
$value = Session::get('key', function() { return 'умолчание'; });
добавлено в 4.2 ()
Получение всех переменных сессии
$data = Session::all();
Проверка существования переменой
if (Session::has('users')) {
//
}
Session::forget('key');
Session::flush();
Присвоение сессии нового идентификатора
Session::regenerate();
Одноразовые данные
Иногда вам нужно сохранить переменную только для следующего запроса. Вы можете сделать это методом PHPSession::flash()
(flash англ. — вспышка — прим. пер.):
Session::flash('key', 'value');
Продление всех одноразовых переменных ещё на один запрос
Session::reflash();
Продление только отдельных переменных
Session::keep(array('username', 'email'));
Сессии в базах данных
При использовании драйвера database вам нужно создать таблицу, которая будет содержать данные сессий. Ниже — пример такого объявления с помощью конструктора таблиц:
Schema::create('sessions', function ($table) {
$table->string('id')->unique();
$table->text('payload');
$table->integer('last_activity');
});
Либо вы можете использовать команду Artisan для создания этой миграции:
shphp artisan session:table composer dump-autoload php artisan migrate
Драйверы
«Драйвер» определяет, где будут храниться данные для каждой сессии. Laravel поставляется с целым набором замечательных драйверов:
- file — данные хранятся в app/storage/sessions.
- cookie — данные хранятся в виде зашифрованных cookie.
- database — хранение данных в БД, используемой приложением.
- memcached и redis — используются эти быстрые кэширующие хранилища пар ключ/значение.
- array — данные содержатся в виде простых массивов PHP и не будут сохраняться между запросами.
- native — использует встроенные средства PHP для работы с сессиями (только для версии 4.0, где он также используется по умолчанию — прим. пер.).
Внимание: драйвер array обычно используется для юнит-тестов, так как он на самом деле не сохраняет данные для последующих запросов.