Сессия позволяет нам управлять уникальными пользователями по запросам и хранить данные для конкретных пользователей. Данные сеанса могут быть доступны в любом месте, где у вас есть доступ к объекту запроса, т. Е. Сеансы доступны из контроллеров, представлений, помощников, ячеек и компонентов.
Доступ к объекту сеанса
Объект сеанса может быть создан путем выполнения следующего кода.
$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
Посетите следующий URL для проверки данных сеанса — http: // localhost: 85 / CakePHP / sessioncheck
Посетите следующий URL для удаления данных сеанса — http: // localhost: 85 / CakePHP / sessiondelete
Посетите следующий URL для уничтожения данных сеанса — http: // localhost: 85 / CakePHP / sessiondestroy