
В php работа с сессиями происходит через глобальный массив $_SESSION. В Yii 2 есть компонент yii\web\Session, который доступен через Yii::$app->session. Посмотрим как работать с ним.
Открытие и закрытие сессий
<span class="kwd">use</span><span class="pln"> yii\web\Session</span><span class="pun">;</span><span class="pln"> </span><span class="com">// инициализация сессии</span><span class="pln"></span> $session = Yii::$app->session; // проверяем наличие открытой сессии if ($session->isActive) ... // открываем сессию $session->open(); // закрываем сессию $session->close(); // уничтожаем все данные сессии $session->destroy();
Сохранение данных в сессию
$session = Yii::$app->session; // первый вариант $session->set('language', 'ru'); // второй вариант $session['language'] = 'ru'; // третий вариант $_SESSION['language'] = 'ru';
Получение данных из сессии
$session = Yii::$app->session; // первый вариант $language = $session->get('language'); // второй вариант $language = $session['language']; // третий вариант $language = isset($_SESSION['language']) ? $_SESSION['language'] : null
Удаление переменной из сессии
$session = Yii::$app->session; // первый вариант $session->remove('language'); // второй вариант unset($session['language']); // третий вариант unset($_SESSION['language']);
Проверка существования переменной в сессии
// первый вариант if ($session->has('language')) ... // второй вариант if (isset($session['language'])) ... // третий вариант if (isset($_SESSION['language'])) ...
Получение всех данных (из всех переменных) сессии
// первый вариант foreach ($session as $session_name => $session_value) echo $session_name.' - '.$session_value; // второй вариант foreach ($_SESSION as $session_name => $session_value) echo $session_name.' - '.$session_value;
Массив переменных в сессии
$session = Yii::$app->session; // первый вариант $session['user'] = [ 'id' => 1, 'username' => 'You', ]; // второй вариант $session['user.id'] = 1; $session['user.username'] = 'You'; // неработоспособный вариант $session['user']['id'] = 1; $session['user']['username'] = 'You'; // обращение к данным массива echo $session['user']['id']; echo $session['user']['username'];
Flash-сообщения с использованием сессий
$session = Yii::$app->session; // устанавливаем значение flash сообщения $session->setFlash('usermessage', 'Регистрация прошла успешно!'); // проверяем наличие сообщения $result = $session->hasFlash('usermessage'); // получаем и отображаем сообщение echo $session->getFlash('usermessage');
Подробнее читайте в офиц. документации про Сессии и куки (или на англ. Sessions and Cookies)
6 октября 2017, Программирование, веб-кодинг / Метки: сессии
16 января 2023

Yii2-user сменить текущего пользователя или переход на другого пользователя (SwitchIdentity)
Impersonate User / Become another user
12 декабря 2022

Yii2: uclead MultipleInput + kartik DepDrop
Настраиваем множественные поля с выпадающим списком