Учебники

Yii — Сессии

Сессии делают данные доступными на разных страницах. Сеанс создает файл на сервере во временном каталоге, где хранятся все переменные сеанса. Эти данные доступны для всех страниц вашего веб-сайта во время посещения этого конкретного пользователя.

Когда начинается сеанс, происходит следующее:

  • PHP создает уникальный идентификатор для этой конкретной сессии.

  • Файл cookie с именем PHPSESSID отправляется на стороне клиента (в браузер).

  • Сервер создает файл во временной папке, в которой сохраняются все переменные сеанса.

  • Когда сервер хочет получить значение из переменной сеанса, PHP автоматически получает уникальный идентификатор сеанса из файла cookie PHPSESSID. Затем он ищет во временном каталоге нужный файл.

PHP создает уникальный идентификатор для этой конкретной сессии.

Файл cookie с именем PHPSESSID отправляется на стороне клиента (в браузер).

Сервер создает файл во временной папке, в которой сохраняются все переменные сеанса.

Когда сервер хочет получить значение из переменной сеанса, PHP автоматически получает уникальный идентификатор сеанса из файла cookie PHPSESSID. Затем он ищет во временном каталоге нужный файл.

Чтобы начать сеанс, вы должны вызвать функцию session_start () . Все переменные сеанса хранятся в глобальной переменной $ _SESSION . Вы также можете использовать функцию isset (), чтобы проверить, установлена ​​ли переменная сеанса —

<?php
   session_start();
   if( isset( $_SESSION['number'] ) ) {
      $_SESSION['number'] += 1;
   }else {
      $_SESSION['number'] = 1;
   }
   $msg = "This page was visited ".  $_SESSION['number'];
   $msg .= "in this session.";
   echo $msg;
?>

Чтобы уничтожить сеанс, вы должны вызвать функцию session_destroy () . Чтобы уничтожить одну переменную сеанса, вызовите функцию unset ()

<?php
   unset($_SESSION['number']);
   session_destroy();
?>

Использование сессий в Yii

Сеансы позволяют сохранять данные в пользовательских запросах. В PHP вы можете получить к ним доступ через переменную $ _SESSION . В Yii вы можете получить доступ к сеансам через компонент приложения сеанса.

Шаг 1. Добавьте метод actionOpenAndCloseSession в SiteController .

public function actionOpenAndCloseSession() {
   $session = Yii::$app->session;
   // open a session
   $session->open();
   // check if a session is already opened
   if ($session->isActive) echo "session is active";
   // close a session
   $session->close();
   // destroys all data registered to a session
   $session->destroy();
}

В приведенном выше коде мы получаем компонент приложения сеанса, открываем сеанс, проверяем, активен ли он, закрываем сеанс и, наконец, уничтожаем его.

Шаг 2 — Введите http: // localhost: 8080 / index.php? R = site / open-and-close-session в адресной строке веб-браузера, вы увидите следующее.

Сессия активна

Для доступа к переменным сеанса вы можете использовать методы set () и get () .

Шаг 3 — Добавьте метод actionAccessSession в SiteController .

public function actionAccessSession() {

   $session = Yii::$app->session;
	
   // set a session variable
   $session->set('language', 'ru-RU');
	
   // get a session variable
   $language = $session->get('language');
   var_dump($language);
		  
   // remove a session variable
   $session->remove('language');
		  
   // check if a session variable exists
   if (!$session->has('language')) echo "language is not set";
		  
   $session['captcha'] = [
      'value' => 'aSBS23',
      'lifetime' => 7200,
   ];
   var_dump($session['captcha']);
}

Шаг 4 — Перейдите на http: // localhost: 8080 / index.php? R = site / access-session , вы увидите следующее.