Может войдёшь?
Черновики Написать статью Профиль

Сессии

перевод документация 4.x

  1. 1. Настройка
  2. 2. Основы использования
  3. 3. Одноразовые данные
  4. 4. Сессии в базах данных
  5. 5. Драйверы
Этот перевод актуален для англоязычной документации на (ветка 4.2) , (ветка 4.1) и (ветка 4.0). Опечатка? Выдели и нажми Ctrl+Enter.

Настройка

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

Настройки сессии содержатся в файле app/config/session.php. Обязательно просмотрите параметры, доступные вам — они хорошо документированы. По умолчанию Laravel использует драйвер file (в версии 4.0 драйвер native — прим. пер.), который подходит для большинства приложений.

+ 4.1

добавлено в 4.1 ()

Зарезервированные ключи
Laravel использует внутренний ключ сессий flash, поэтому нельзя добавлять элемент с таким именем в сессию.

Основы использования

Сохранение переменной в сессии

PHP
Session::put('key''value');

Добавление элемента к переменной-массиву

PHP
Session::push('user.teams''developers');

Чтение переменной сессии

PHP
$value Session::get('key');

Чтение переменной или возврат значения по умолчанию

PHP
$value Session::get('key''default');

$value Session::get('key', function() { return 'умолчание'; });
+ 4.2

добавлено в 4.2 ()

Прочитать переменную и забыть её

PHP
$value Session::pull('key''default');

Получение всех переменных сессии

PHP
$data Session::all();

Проверка существования переменой

PHP
if (Session::has('users')) {
  
//
}

Удаление переменной из сессии

PHP
Session::forget('key');

Удаление всех переменных

PHP
Session::flush();

Присвоение сессии нового идентификатора

PHP
Session::regenerate();

Одноразовые данные

Иногда вам нужно сохранить переменную только для следующего запроса. Вы можете сделать это методом PHPSession::flash() (flash англ. — вспышка — прим. пер.):

PHP
Session::flash('key''value');

Продление всех одноразовых переменных ещё на один запрос

PHP
Session::reflash();

Продление только отдельных переменных

PHP
Session::keep(array('username''email'));

Сессии в базах данных

При использовании драйвера database вам нужно создать таблицу, которая будет содержать данные сессий. Ниже — пример такого объявления с помощью конструктора таблиц:

PHP
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 обычно используется для юнит-тестов, так как он на самом деле не сохраняет данные для последующих запросов.

Написать комментарий

Разметка: ? ?

Авторизуйся, чтобы прокомментировать.