Zend Framework - Sitzungsverwaltung

Eine Sitzung ist ein sehr wichtiges Konzept in einer Webanwendung. Es bietet die Möglichkeit, die Daten des Benutzers für einen begrenzten Zeitraum auf dem Webserver zu speichern. Das Zend-Framework bietet eine separate Komponente:zend-session um die Sitzungsinformationen zu behandeln.

Installieren Sie eine Sitzungskomponente

Die Sitzungskomponente kann mit der installiert werden Composer wie unten angegeben -

composer require zendframework/zend-session

Sitzungskomponenten

Das Zend Framework bietet sechs Komponenten für die Sitzungsverwaltung. Alle diese Komponenten wurden unten erklärt -

  • Zend\Session\Container - Die Haupt-API zum Lesen und Schreiben der Sitzungsinformationen.

  • Zend\Session\SessionManager - Es wird verwendet, um den gesamten Lebenszyklus einer Sitzung zu verwalten.

  • Zend\Session\Storage - Hiermit wird festgelegt, wie die Sitzungsdaten im Speicher gespeichert werden.

  • Zend\Session\SaveHandler - Es wird zum Speichern und Abrufen der Sitzungsdaten an einem physischen Ort wie RDBMS, Redis, MangoDB usw. verwendet.

  • Zend\Session\Validator - Dies wird verwendet, um die Sitzung vor Hijacking zu schützen, indem die Remoteadresse und der Benutzeragent der ersten und nachfolgenden Anforderung überprüft werden.

  • Zend\Session\Config\SessionConfig - Hiermit wird konfiguriert, wie sich die Sitzung verhalten soll.

Die Standardkonfiguration reicht aus, um mit einer Sitzung zu arbeiten. Mit den oben genannten Komponenten können alle Aspekte einer Sitzung problemlos behandelt werden.

Beispiel für eine Sitzungskomponente

Lassen Sie uns die folgenden Punkte beachten, um eine neue Seite zu erstellen, um eine Sitzung im Zend-Framework zu verstehen. Standardmäßig reicht es aus, eine Instanz von a zu erstellenContainer Klasse zum Verwalten von Sitzungen.

  • Neue Aktion erstellen, sessionAction im TutorialController.

  • Initialisieren Sie a Container Objekt.

$c = new Container();
  • Überprüfen Sie, ob ein beliebiger Schlüssel vorhanden ist countexistiert. Wenn der Schlüssel nicht verfügbar ist, initialisieren Sie dencount mit Wert 1. Wenn verfügbar, erhöhen Sie den Wert wie im folgenden Code gezeigt.

if (!isset($c->count)) { 
   $c->count = 0; 
} else { 
   $c->count++; 
}
  • Registrieren Sie die Anzahl im ViewModel.

  • Erstellen Sie eine Vorlagendatei für - sessionAction, session.phtml in myapp / module / Tutorial / view / tutorial / tutorial / session.phtml und rendern Sie dann die count Wert.

  • Durch das Aktualisieren der Seite wird der Wert von erhöht countin der Sitzung. Die vollständige Auflistung ist wie folgt -

TutorialController.php

public function sessionAction() { 
   $c = new Container();  
   if (!isset($c->count)) { 
      $c->count = 0; 
   } else { 
      $c->count++; 
   }  
   $view = new ViewModel([ 
      'count' => $c->count, 
   ]);  
   return $view; 
}

session.pthml

Session data, COUNT = <?= $this->count ?>

Sample Result

Session data, Count = 5