CakePHP - Manajemen Sesi

Sesi memungkinkan kami untuk mengelola pengguna unik di seluruh permintaan, dan menyimpan data untuk pengguna tertentu. Data sesi dapat diakses di mana saja, di mana saja, di mana Anda memiliki akses ke objek permintaan, yaitu sesi dapat diakses dari pengontrol, tampilan, pembantu, sel, dan komponen.

Mengakses Objek Sesi

Objek sesi dapat dibuat dengan menjalankan kode berikut.

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

Menulis Data Sesi

Untuk menulis sesuatu dalam sesi, kita bisa menggunakan write() session metode.

Session::write($key, $value)

Metode di atas akan mengambil dua argumen, yaitu value dan key di bawah, yang nilainya akan disimpan.

Contoh

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

Membaca Data Sesi

Untuk mengambil data yang disimpan dari sesi, kita dapat menggunakan read() session metode.

Session::read($key)

Fungsi di atas hanya akan mengambil satu argumen, yaitu the key of the value,yang digunakan pada saat menulis data sesi. Setelah kunci yang benar diberikan, maka fungsi tersebut akan mengembalikan nilainya.

Contoh

$session->read('name');

Saat Anda ingin memeriksa apakah, data tertentu ada dalam sesi atau tidak, Anda dapat menggunakan check() session metode.

Session::check($key)

Fungsi di atas hanya akan menggunakan key sebagai argumennya.

Contoh

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

Hapus Data Sesi

Untuk menghapus data dari sesi, kita dapat menggunakan delete() session metode untuk menghapus data.

Session::delete($key)

Fungsi di atas hanya akan mengambil kunci dari nilai yang akan dihapus dari sesi.

Contoh

$session->delete('name');

Ketika Anda ingin membaca dan kemudian menghapus data dari sesi, kita dapat menggunakan consume() session metode.

static Session::consume($key)

Fungsi di atas hanya akan menggunakan key sebagai argumen.

Contoh

$session->consume('name');

Menghancurkan Sesi

Kita perlu menghancurkan sesi pengguna, saat pengguna keluar dari situs dan menghancurkan sesi destroy() metode digunakan.

Session::destroy()

Contoh

$session->destroy();

Menghancurkan sesi akan menghapus semua data sesi dari server, tetapi tidak akan menghapus cookie sesi.

Perpanjang Sesi

Dalam situasi, di mana Anda ingin memperpanjang sesi pengguna, kita dapat menggunakan renew() session metode.

Session::renew()

Contoh

$session->renew();

Sesi Lengkap

Lakukan perubahan di config/routes.php file seperti yang ditunjukkan pada program berikut.

config/routes.php

<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
   $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
      'httpOnly' => true,
   ]));
   $builder->applyMiddleware('csrf');
   //$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
   $builder->connect('/session-object',['controller'=>'Sessions','action'=>'index']);
   $builder->connect('/session-read',['controller'=>'Sessions','action'=>'retrieve_session_data']);
   $builder->connect('/session-write',['controller'=>'Sessions','action'=> 'write_session_data']);
   $builder->connect('/session-check',['controller'=>'Sessions','action'=>'check_session_data']);
   $builder->connect('/session-delete',['controller'=>'Sessions','action'=>'delete_session_data']);
   $builder->connect('/session-destroy',['controller'=>'Sessions','action'=>'destroy_session_data']);
   $builder->fallbacks();
});

Membuat SessionsController.php mengajukan di src/Controller/SessionsController.php. Salin kode berikut di file pengontrol

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->getSession();
      //read data from session
      $name = $session->read('name');
      $this->set('name',$name);
   }
   public function writeSessionData(){
      //create session object
      $session = $this->request->getSession();
      //write data in session
      $session->write('name','Virat Gandhi');
   }
   public function checkSessionData(){
      //create session object
      $session = $this->request->getSession();
      //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->getSession();
      //delete session data
      $session->delete('name');
   }
   public function destroySessionData(){
      //create session object
      $session = $this->request->getSession();
      //destroy session
      $session->destroy();
   }
}
?>

Buat direktori Sessions di src/Template dan di bawah direktori itu buat a View file bernama write_session_data.php. Salin kode berikut di file itu.

src/Template/Sessions/write_session_data.php

The data has been written in session.

Buat yang lain View file bernama retrieve_session_data.php di bawah yang sama Sessions direktori dan salin kode berikut di file itu.

src/Template/Sessions/retrieve_session_data.php

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

Buat yang lain View file bernama check_session_data.ctp di bawah direktori Sesi yang sama dan salin kode berikut di file itu.

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;?>

Buat yang lain View file bernama delete_session_data.ctp, di bawah direktori Sesi yang sama dan salin kode berikut di file itu.

src/Template/Sessions/delete_session_data.ctp

Data deleted from session.

Buat yang lain View file bernama destroy_session_data.ctp, di bawah direktori Sesi yang sama dan salin kode berikut di file itu.

src/Template/Sessions/destroy_session_data.ctp

Session Destroyed.

Keluaran

Jalankan contoh di atas dengan mengunjungi URL berikut. URL ini akan membantu Anda menulis data dalam sesi.

http: // localhost / cakephp4 / session-write

Kunjungi URL berikut to read session data − http://localhost/cakephp4/session-read

Kunjungi URL berikut to check session data - http: // localhost / cakephp4 / session-check

Kunjungi URL berikut to delete session data - http: // localhost / cakephp4 / session-delete Kunjungi

Kunjungi URL berikut to destroy session data - http: // localhost / cakephp4 / session-destroy