2016-09-15 7 views
0

Ich lese über einen Weg zu destroy a particular session using its ID in pure PHP und ich möchte das gleiche mit den Symfony Services und Komponenten zu tun. Dies muss außerhalb eines Controllers (z. B. eines Konsolenbefehls) erfolgen.Zerstöre eine bestimmte Sitzung

Allerdings kann ich keine Service/Komponente finden, die die session_commit Methode behandelt.

Sollte ich es benutzen oder gibt es einen Service/eine Komponente, die ich verpasst habe?

+0

Da session_destroy keine ID annimmt, zerstört es die aktuelle Sitzung, sicherlich würde es die Sitzung zerstören, die Symfony eingerichtet hat. Session_commit ist nicht notwendig, wenn Sie die Sitzung zerstören. – Devon

Antwort

2

Jenseits eine Möglichkeit, eine Sitzung mit seiner ID (Sorry, ich habe keine Zeit, diesen Code zu testen, aber es sollte in Ordnung arbeiten) zu töten.

use Symfony\Component\HttpFoundation\Session\Session; 

$session_id_to_kill = 'xxxxxxxx'; 

$session = new Session(); 
$session->setId($session_id_to_kill); 
$session->start(); 
$session->invalidate(); 

Wenn Sie eine aktive Sitzung haben (Sie führen diese Aktion durch eine Controller-Aktion), haben Sie es zu stoppen, bevor und es wieder, nachdem Sie die anderen zu töten.

$request->getSession()->stop(); // Stop the current session 

// Kill the session using the same code as above 

// Restart you session 
$request->getSession()->start(); 
+0

Danke. Dein Code sieht gut aus. Ich werde versuchen, es nächste Woche zu benutzen. –

0

Um Ihre Frage zu beantworten: http://symfony.com/doc/current/components/http_foundation/sessions.html#session-data-management

aus Ihrem Controller, werden Sie Ihre Anfrage Objekt haben. Für allgemeine Zwecke, können Sie

$request->getSession()->clear(); 

oder

$request->getSession()->remove("sessionKey"); 

für weitere Informationen verwenden, können Sie http://symfony.com/doc/current/components/http_foundation/sessions.html

example: getStorageKey() 

Gibt den Schlüssel lesen, die die Tasche schließlich seine Array speichern unter in $ _SESSION. Im Allgemeinen kann dieser Wert auf dem Standardwert belassen werden und dient zur internen Verwendung.

seine alle in der doc Erwähnung über

+0

Das ist nicht was ich brauche. Ihr Code entfernt einen bestimmten Schlüssel aus der aktuellen Sitzung. Ich muss eine ** bestimmte Sitzung ** entfernen (d. H. Nicht die aktuelle). –

+0

Ich habe gerade die Antwort – Ajir

+0

'$ Anfrage-> getSession()' === der aktuellen Sitzung bearbeitet. Das ist nicht was ich suche. –