Heim  >  Artikel  >  Backend-Entwicklung  >  CakePHP-Sitzungsverwaltung

CakePHP-Sitzungsverwaltung

WBOY
WBOYOriginal
2024-09-10 17:26:38770Durchsuche

Sitzung ermöglicht uns die Verwaltung einzelner Benutzer über Anfragen hinweg und speichert Daten für bestimmte Benutzer. Auf Sitzungsdaten kann überall zugegriffen werden, wo Sie Zugriff auf das Anforderungsobjekt haben, d. h. Sitzungen sind von Controllern, Ansichten, Helfern, Zellen und Komponenten aus zugänglich.

Auf Sitzungsobjekt zugreifen

Sitzungsobjekte können durch Ausführen des folgenden Codes erstellt werden.

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

Sitzungsdaten schreiben

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

Session::write($key, $value)

Die obige Methode benötigt zwei Argumente, den Wert und den Schlüssel, 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 Methode read() session verwenden.

Session::read($key)

Die obige Funktion benötigt nur ein Argument, nämlich den Schlüssel des Werts, der zum Zeitpunkt des Schreibens der Sitzungsdaten verwendet wurde. 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 Methode check() session verwenden.

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 Methode delete() session verwenden, um die Daten zu löschen.

Session::delete($key)

Die obige Funktion übernimmt nur den Schlüssel des Werts, der aus der Sitzung gelöscht werden soll.

Beispiel

$session->delete('name');

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

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, wird zum Zerstören der Sitzung die Methode destroy() verwendet.

Session::destroy()

Beispiel

$session->destroy();

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

Eine Sitzung verlängern

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

Session::renew()

Beispiel

$session->renew();

Sitzung abschließen

Nehmen Sie Änderungen in der Datei config/routes.php vor, 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();
});

Erstellen Sie eine Datei SessionsController.php unter 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 unter src/Template und erstellen Sie unter diesem Verzeichnis eine View-Datei mit dem CakePHP-Sitzungsverwaltungn write_session_data.php. Kopieren Sie die Folgender Code in dieser Datei.

src/Template/Sessions/write_session_data.php

The data has been written in session.

Erstellen Sie eine weitere View-Datei mit dem CakePHP-Sitzungsverwaltungn retrieve_session_data.php im selben Sessions-Verzeichnis und kopieren Sie den folgenden Code in diese Datei.

src/Template/Sessions/retrieve_session_data.php

Here is the data from session.
CakePHP-Sitzungsverwaltung: =$name;?>

Erstellen Sie eine weitere View-Datei mit dem CakePHP-Sitzungsverwaltungn check_session_data.ctp im selben Sitzungsverzeichnis und kopieren Sie den folgenden Code in diese 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;?>

Erstellen Sie eine weitere View-Datei mit dem CakePHP-Sitzungsverwaltungn delete_session_data.ctp, im selben Sitzungsverzeichnis und kopieren Sie den folgenden Code in diese Datei.

src/Template/Sessions/delete_session_data.ctp

Data deleted from session.

Erstellen Sie eine weitere View-Datei mit dem CakePHP-Sitzungsverwaltungn destroy_session_data.ctp im selben Sitzungsverzeichnis und kopieren Sie den folgenden Code in diese Datei.

src/Template/Sessions/destroy_session_data.ctp

Session CakePHP-Sitzungsverwaltung.

Ausgabe

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

http://localhost/cakephp4/session-write

Written in Session

Besuchen Sie die folgende URL um Sitzungsdaten zu lesen: http://localhost/cakephp4/session-read

CakePHP-Sitzungsverwaltung

Besuchen Sie die folgende URL um Sitzungsdaten zu überprüfen − http://localhost/cakephp4/session-check

CakePHP-Sitzungsverwaltung Exists

Besuchen Sie die folgende URL um Sitzungsdaten zu löschen − http://localhost/cakephp4/session-delete Besuchen Sie die

Delete From Session

Besuchen Sie die folgende URL um Sitzungsdaten zu zerstören − http://localhost/cakephp4/session-destroy

CakePHP-Sitzungsverwaltung

Das obige ist der detaillierte Inhalt vonCakePHP-Sitzungsverwaltung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:CakePHP-InternationalisierungNächster Artikel:CakePHP-Internationalisierung