9

これが私がセッションを設定する方法です

$this -> sess = new Zend_Session_Namespace('user');
$this -> sess -> username = "Bob";
$this -> sess -> admin = "1";

そして、これは私がそれを殺す方法です

setcookie("mycookiename",md5(rand(10,1200)),time() - (60 * 60),"/",".site.com");
$_SESSION = array();
session_destroy();
$this -> _redirect('/');

しかし、それでも $this->sess->admin は '1' のままです ... ユーザー名はなくなりましたが、admin はそのままです。クライアントに関連付けられたすべてのセッションを削除する正しい方法は何ですか?

私が行った場合

$this->sess->admin = 0;

その後、機能しますが、これが保持している各セッション変数の正しい方法であるとは思えません。

私も試しました

setcookie("mycookiename",md5(rand(10,1200)),time() - (60 * 60),"/",".site.com");
Zend_Session::namespaceUnset($this->sess);

機能しませんでした。セッションを閉じませんでした。

4

3 に答える 3

19

クライアントに関連付けられたすべてのセッションを削除するには、次を使用します。

\Zend_Session::destroy( true );

これにより、セッション全体が削除され、セッションに関連付けられているすべての Cookie を削除するヘッダー リクエストがクライアントに送信されます。または、このメソッドのパラメーターを false に設定して、ユーザー Cookie を削除しないようにすることもできます。ただし、次の点に注意してください。

PHP が HTTP ヘッダーを送信する前に Zend_Session::destroy(true) を呼び出すか、出力バッファリングを有効にする必要があります。現在のセッションに関連付けられているすべての永続データが破棄されます。ただし、PHP の変数は影響を受けないため、名前空間付きのセッション (Zend_Session_Namespace のインスタンス) は引き続き読み取り可能です。

これらを削除するには、次の方法を使用します。

$ns = 'auth'
$namespace = new \Zend_Session_Namespace( $ns );
$namespace->unsetAll();

詳しくはこちらをご覧ください

于 2012-05-09T12:01:57.137 に答える
10

特定のセッションを破棄するには

Zend_Session::namespaceUnset('user');
于 2012-05-09T12:02:46.403 に答える
4

使用できます

Zend_Session::destroy($remove_cookie = true, $readonly = true);

マニュアルを見る

于 2012-05-09T11:53:39.753 に答える