CakePHP - Sitzungsverwaltung

Mit der Sitzung können wir eindeutige Benutzer über Anforderungen hinweg verwalten und Daten für bestimmte Benutzer speichern. Auf Sitzungsdaten kann überall und überall zugegriffen werden, wo Sie Zugriff auf das Anforderungsobjekt haben, dh auf Sitzungen kann über Controller, Ansichten, Helfer, Zellen und Komponenten zugegriffen werden.

Zugriff auf das Sitzungsobjekt

Das Sitzungsobjekt kann durch Ausführen des folgenden Codes erstellt werden.

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

Sitzungsdaten schreiben

Um etwas in der Sitzung zu schreiben, können wir das verwenden write() session Methode.

Session::write($key, $value)

Die obige Methode akzeptiert zwei Argumente, das value und das key unter dem der Wert gespeichert wird.

Beispiel

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

Sitzungsdaten lesen

Um gespeicherte Daten aus der Sitzung abzurufen, können wir die verwenden read() session Methode.

Session::read($key)

Die obige Funktion akzeptiert nur ein Argument the key of the value,Dies wurde zum Zeitpunkt des Schreibens der Sitzungsdaten verwendet. Sobald der richtige Schlüssel angegeben wurde, gibt die Funktion ihren Wert zurück.

Beispiel

$session->read('name');

Wenn Sie überprüfen möchten, ob bestimmte Daten in der Sitzung vorhanden sind oder nicht, können Sie die verwenden check() session Methode.

Session::check($key)

Die obige Funktion verwendet nur den Schlüssel als Argument.

Beispiel

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

Sitzungsdaten löschen

Um Daten aus der Sitzung zu löschen, können wir die verwenden delete() session Methode zum Löschen der Daten.

Session::delete($key)

Die obige Funktion übernimmt nur die Taste des Werts, der aus der Sitzung gelöscht werden soll.

Beispiel

$session->delete('name');

Wenn Sie dann Daten aus der Sitzung lesen und dann löschen möchten, können wir die verwenden consume() session Methode.

static Session::consume($key)

Die obige Funktion verwendet nur den Schlüssel als Argument.

Beispiel

$session->consume('name');

Eine Sitzung zerstören

Wir müssen eine Benutzersitzung zerstören, wenn sich der Benutzer von der Site abmeldet, und die Sitzung zerstören destroy() Methode wird verwendet.

Session::destroy()

Beispiel

$session->destroy();

Durch das Zerstören der Sitzung werden alle Sitzungsdaten vom Server entfernt, Sitzungscookies jedoch nicht.

Sitzung erneuern

In einer Situation, in der Sie die Benutzersitzung dann erneuern möchten, können wir die verwenden renew() session Methode.

Session::renew()

Beispiel

$session->renew();

Sitzung abschließen

Nehmen Sie Änderungen in der config/routes.php Datei wie im folgenden Programm gezeigt.

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();
});

Ein ... kreieren SessionsController.php Datei bei src/Controller/SessionsController.php. Kopieren Sie den folgenden Code in die Controller-Datei

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();
   }
}
?>

Erstellen Sie ein Verzeichnis Sessions beim src/Template und unter diesem Verzeichnis erstellen Sie eine View Datei aufgerufen write_session_data.php. Kopieren Sie den folgenden Code in diese Datei.

src/Template/Sessions/write_session_data.php

The data has been written in session.

Ein anderes erstellen View Datei aufgerufen retrieve_session_data.php unter dem gleichen Sessions Verzeichnis und kopieren Sie den folgenden Code in diese Datei.

src/Template/Sessions/retrieve_session_data.php

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

Ein anderes erstellen View Datei aufgerufen check_session_data.ctp Kopieren Sie den folgenden Code in dieselbe Datei.

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

Ein anderes erstellen View Datei aufgerufen delete_session_data.ctp, Kopieren Sie den folgenden Code in dieselbe Datei.

src/Template/Sessions/delete_session_data.ctp

Data deleted from session.

Ein anderes erstellen View Datei aufgerufen destroy_session_data.ctp, Kopieren Sie den folgenden Code in dieselbe Datei.

src/Template/Sessions/destroy_session_data.ctp

Session Destroyed.

Ausgabe

Führen Sie das obige Beispiel aus, indem Sie die folgende URL aufrufen. Diese URL hilft Ihnen beim Schreiben von Daten in einer Sitzung.

http: // localhost / cakephp4 / session-write

Besuchen Sie die folgende URL to read session data − http://localhost/cakephp4/session-read

Besuchen Sie die folgende URL to check session data - http: // localhost / cakephp4 / session-check

Besuchen Sie die folgende URL to delete session data - http: // localhost / cakephp4 / session-delete Besuchen Sie die

Besuchen Sie die folgende URL to destroy session data - http: // localhost / cakephp4 / session-destroy