Symfony - Cookies und Sitzungsverwaltung

Die Symfony HttpFoundation-Komponente bietet eine objektorientierte Cookie- und Sitzungsverwaltung. CookieBietet clientseitige Datenspeicherung und unterstützt nur eine kleine Datenmenge. Normalerweise sind es 2 KB pro Domain und dies hängt vom Browser ab.SessionBietet serverseitige Datenspeicherung und unterstützt eine große Datenmenge. Lassen Sie uns sehen, wie Sie ein Cookie und eine Sitzung in einer Symfony-Webanwendung erstellen.

Plätzchen

Symfony bietet eine Cookie-Klasse zum Erstellen eines Cookie-Elements. Lassen Sie uns eine Cookie-Farbe erstellen, die in 24 Stunden mit Wert abläuftblue. Der Konstruktorparameter der Cookie-Klasse lautet wie folgt.

  • Name (Typ: Zeichenfolge) - Cookie-Name
  • value (type: string) - Cookie-Wert
  • expire (Typ: Ganzzahl / Zeichenfolge / Datum / Uhrzeit) - Ablaufinformationen
  • Pfad (Typ: Zeichenfolge) - Der Serverpfad, in dem das Cookie verfügbar ist
  • Domäne (Typ: Zeichenfolge) - Die Domänenadresse, unter der das Cookie verfügbar ist
  • Secure (Typ: Boolean) - Gibt an, ob das Cookie in einer HTTPS-Verbindung übertragen werden muss
  • httpOnly (Typ: boolean) - Gibt an, ob das Cookie nur im HTTP-Protokoll verfügbar ist
use Symfony\Component\HttpFoundation\Cookie;  
$cookie = new Cookie('color', 'green', strtotime('tomorrow'), '/', 
   'somedomain.com', true, true);

Symfony bietet außerdem die folgende Option zum Erstellen von Cookies auf der Basis von Zeichenfolgen.

$cookie = Cookie::fromString('color = green; expires = Web, 4-May-2017 18:00:00 +0100; 
path=/; domain = somedomain.com; secure; httponly');

Jetzt muss das erstellte Cookie wie folgt an den Header des http-Antwortobjekts angehängt werden.

$response->headers->setCookie($cookie);

Um das Cookie zu erhalten, können wir das Request-Objekt wie folgt verwenden.

$cookie = $request->cookie->get('color');

Hier, request->cookie ist vom Typ PropertyBag und wir können es mit PropertyBag-Methoden manipulieren.

Session

Symfony bietet eine Sitzungsklasse, die die SessionInterface-Schnittstelle implementiert. Die wichtige Sitzungs-API lautet wie folgt:

start - Startet die Sitzung.

Session $session = new Session(); 
$session->start();

invalidate - Löscht alle Sitzungsdaten und generiert die Sitzungs-ID neu.

set - Speichert Daten in der Sitzung mit einem Schlüssel.

$session->set('key', 'value');

Wir können alle Daten im Sitzungswert verwenden, in einfachen Ganzzahlen zu komplexen Objekten.

get - Ruft mit dem Schlüssel Daten aus der Sitzung ab.

$val = $session->get('key');

remove - Entfernt einen Schlüssel aus der Sitzung.

clear - Entfernt Sitzungsdaten.

FlashBag

Die Sitzung bietet eine weitere nützliche Funktion namens FlashBag. Es ist ein spezieller Container innerhalb der Sitzung, der die Daten nur während der Seitenumleitung enthält. Es ist nützlich bei http-Weiterleitungen. Vor dem Umleiten auf eine Seite können Daten in FlashBag anstelle eines normalen Sitzungscontainers gespeichert werden. Die gespeicherten Daten sind in der nächsten Anforderung (der umgeleiteten Seite) verfügbar. Dann werden die Daten automatisch ungültig.

$session->getFlashBag()->add('key', 'value');  
$session->getFlashBag()->get('key');