Heim > Artikel > Backend-Entwicklung > CakePHP-Sitzungsverwaltung
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.
Sitzungsobjekte können durch Ausführen des folgenden Codes erstellt werden.
$session = $this->request->session();
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.
$session->write('name', 'Virat Gandhi');
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.
$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.
if ($session->check('name')) { // name exists and is not null. }
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.
$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.
$session->consume('name');
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()
$session->destroy();
Durch das Zerstören der Sitzung werden alle Sitzungsdaten vom Server entfernt, das Sitzungscookie wird jedoch nicht entfernt.
In einer Situation, in der Sie die Benutzersitzung dann erneuern möchten, können wir die Methode renew() session verwenden.
Session::renew()
$session->renew();
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.
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
Besuchen Sie die folgende URL um Sitzungsdaten zu lesen: http://localhost/cakephp4/session-read
Besuchen Sie die folgende URL um Sitzungsdaten zu überprüfen − http://localhost/cakephp4/session-check
Besuchen Sie die folgende URL um Sitzungsdaten zu löschen − http://localhost/cakephp4/session-delete Besuchen Sie die
Besuchen Sie die folgende URL um Sitzungsdaten zu zerstören − http://localhost/cakephp4/session-destroy
Das obige ist der detaillierte Inhalt vonCakePHP-Sitzungsverwaltung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!