Учебники

CakePHP — Управление сессиями

Сессия позволяет нам управлять уникальными пользователями по запросам и хранить данные для конкретных пользователей. Данные сеанса могут быть доступны в любом месте, где у вас есть доступ к объекту запроса, т. Е. Сеансы доступны из контроллеров, представлений, помощников, ячеек и компонентов.

Доступ к объекту сеанса

Объект сеанса может быть создан путем выполнения следующего кода.

$session = $this->request->session();

Запись данных сеанса

Чтобы написать что-то в сеансе, мы можем использовать метод сеанса write () .

Session::write($key, $value)

Приведенный выше метод будет принимать два аргумента: значение и ключ, под которым будет сохранено значение.

пример

$session->write('name', 'Virat Gandhi');

Чтение данных сеанса

Чтобы извлечь сохраненные данные из сеанса, мы можем использовать метод сеанса read () .

Session::read($key)

Вышеупомянутая функция будет принимать только один аргумент, который является ключом значения, которое использовалось во время записи данных сеанса. Как только правильный ключ был предоставлен, функция вернет его значение.

пример

$session->read('name');

Если вы хотите проверить, существуют ли определенные данные в сеансе или нет, вы можете использовать метод сеанса check () .

Session::check($key)

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

пример

if ($session->check('name')) {
   // name exists and is not null.
}

Удалить данные сеанса

Чтобы удалить данные из сеанса, мы можем использовать метод сеанса delete () для удаления данных.

Session::delete($key)

Вышеуказанная функция будет принимать только ключ значения, которое будет удалено из сеанса.

пример

$session->delete('name');

Когда вы хотите прочитать, а затем удалить данные из сеанса, мы можем использовать метод сеанса потребление () .

static Session::consume($key)

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

пример

$session->consume('name'); 

Уничтожение сессии

Нам нужно уничтожить сеанс пользователя, когда пользователь выходит из сайта, и уничтожить сеанс, используя метод destroy () .

Session::destroy()

пример

$session->destroy();

Уничтожение сеанса удалит все данные сеанса с сервера, но не удалит cookie сеанса.

Обновить сессию

В ситуации, когда вы хотите возобновить сеанс пользователя, мы можем использовать метод сеанса renew () .

Session::renew()

пример

$session->renew();

Завершить сессию

Make changes in the config/routes.php file as shown in the following program.

конфиг / routes.php

<?php
   use Cake\Core\Plugin;
   use Cake\Routing\RouteBuilder;
   use Cake\Routing\Router;

   Router::defaultRouteClass('DashedRoute');
   Router::scope('/', function (RouteBuilder $routes) {
      $routes->connect('/sessionobject',
         ['controller'=>'Sessions','action'=>'index']);
      $routes->connect('/sessionread',
         ['controller'=>'Sessions','action'=>'retrieve_session_data']);
      $routes->connect('/sessionwrite',
         ['controller'=>'Sessions','action'=>'write_session_data']);
      $routes->connect('/sessioncheck',
         ['controller'=>'Sessions','action'=>'check_session_data']);
      $routes->connect('/sessiondelete',
         ['controller'=>'Sessions','action'=>'delete_session_data']);
      $routes->connect('/sessiondestroy',
         ['controller'=>'Sessions','action'=>'destroy_session_data']);
      $routes->fallbacks('DashedRoute');
   });
   Plugin::routes();

Создайте файл SessionsController.php в src / Controller / SessionsController.php . Скопируйте следующий код в файл контроллера.

SRC / Controller / SessionsController.php

<?php
   namespace App\Controller;
   use App\Controller\AppController;

   class SessionsController extends AppController{
      public function retrieveSessionData(){
         //create session object
         $session = $this->request->session();
      
         //read data from session
         $name = $session->read('name');
         $this->set('name',$name);
      }
      public function writeSessionData(){
         //create session object
         $session = $this->request->session();
         
         //write data in session
         $session->write('name','Virat Gandhi');
      }
      public function checkSessionData(){
         //create session object
         $session = $this->request->session();
      
         //check session data
         $name = $session->check('name');
         $address = $session->check('address');
         $this->set('name',$name);
         $this->set('address',$address);
      }
      public function deleteSessionData(){
         //create session object
         $session = $this->request->session();
         
         //delete session data
         $session->delete('name');
      }
      public function destroySessionData(){
         //create session object
         $session = $this->request->session();
         
         //destroy session
         $session->destroy();
      }
   }
?>

Создайте каталог Sessions в src / Template и в этом каталоге создайте файл View с именем write_session_data.ctp . Скопируйте следующий код в этот файл.

SRC / Template / Sessions / write_session_data.ctp

The data has been written in session.

Создайте другой файл View с именем retrieve_session_data.ctp в том же каталоге Sessions и скопируйте следующий код в этот файл.

SRC / Template / Sessions / retrieve_session_data.ctp

Here is the data from session.
Name: <?=$name;?>

Создайте другой файл View с именем check_session_data.ctp в том же каталоге Sessions и скопируйте следующий код в этот файл.

SRC / Template / Sessions / check_session_data.ctp

<?php if($name): ?>
name exists in the session.

<?php else: ?>
name doesn't exist in the database

<?php endif;?>
<?php if($address): ?>
address exists in the session.

<?php else: ?>
address doesn't exist in the database

<?php endif;?>

Создайте другое представление filbe с именем delete_session_data.ctp в том же каталоге Sessions и скопируйте следующий код в этот файл.

SRC / Template / Sessions / delete_session_data.ctp

Data deleted from session.

Создайте другой файл View с именем destroy_session_data.ctp в том же каталоге Sessions и скопируйте следующий код в этот файл.

SRC / Template / Sessions / destroy_session_data.ctp

Session Destroyed.

Выход

Выполните приведенный выше пример, посетив следующий URL. Этот URL поможет вам записать данные в сессию.

HTTP: // локальный: 85 / CakePHP / сессии записи

сессия

Посетите следующий URL для чтения данных сеансаhttp: // localhost: 85 / CakePHP / session-read

CakePHP Sessions

Посетите следующий URL для проверки данных сеансаhttp: // localhost: 85 / CakePHP / sessioncheck

сессии

Посетите следующий URL для удаления данных сеансаhttp: // localhost: 85 / CakePHP / sessiondelete

Удалить сессию

Посетите следующий URL для уничтожения данных сеансаhttp: // localhost: 85 / CakePHP / sessiondestroy