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