2016-09-15 4 views
0

私はdestroy a particular session using its ID in pure PHPへの道について読んでおり、Symfonyのサービスとコンポーネントを使って同じことをしたいと思います。 これはコントローラー外で行う必要があります(コンソールコマンドなど)。特定のセッションを破棄します

ただし、session_commitメソッドを処理するサービス/コンポーネントは見つかりません。

私はそれを使用すべきか、私が逃したサービス/コンポーネントがありますか?あなたの質問に答えるために

+0

session_destroyはIDを取得しないため、現在のセッションを破壊します.Symfonyが確立したセッションを破壊します。セッションを破棄する場合は、Session_commitは必要ありません。 – Devon

答えて

2

以下上記のdoc言及そのIDを使用してセッションを殺すための方法で(申し訳ありませんが、私はそのコードをテストする時間がないが、それは正常に動作する必要があります)。あなたは(あなたがコントローラのアクションを通じて、このアクションを実行する)アクティブなセッションを持っている場合は

use Symfony\Component\HttpFoundation\Session\Session; 

$session_id_to_kill = 'xxxxxxxx'; 

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

は、あなたが前にそれを停止し、あなたが他の1を殺した後、それを復元する必要があります。

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

// Kill the session using the same code as above 

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

ありがとうございます。あなたのコードはよく見えます。私は週にそれを次に使用しようとします。 –

0

:あなたのコントローラ内からhttp://symfony.com/doc/current/components/http_foundation/sessions.html#session-data-management

を、あなたはあなたの要求オブジェクトを持つことになります。一般的な目的のために、あなたはより多くの情報のため

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

または

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

を使用することができ、あなたは袋が最終的に中の下にその配列を格納するキーを返します

http://symfony.com/doc/current/components/http_foundation/sessions.html

example: getStorageKey() 
を読むことができます$ _SESSION。一般に、この値はデフォルト値のままにしておくことができ、内部使用になります。

そのすべて

+0

これは私が必要なものではありません。あなたのコードは、現在のセッションから特定のキーを削除します。 **特定のセッション**(現在のセッションではない)を削除する必要があります。 –

+0

私はちょうど答えを – Ajir

+0

'$ request-> getSession()' ===現在のセッションを編集しました。これは私が探しているものではありません。 –

関連する問題