这就是我设置会话的方式
$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"......用户名消失了,但管理员仍然是一个。删除与客户端关联的所有会话的正确方法是什么?
如果我这样做
$this->sess->admin = 0;
然后它起作用了,但我怀疑这是我持有的每个会话变量的正确方法。
我也试过
setcookie("mycookiename",md5(rand(10,1200)),time() - (60 * 60),"/",".site.com");
Zend_Session::namespaceUnset($this->sess);
它没有用,它没有关闭任何会话。
要删除与客户端关联的所有会话,请使用以下命令:
'Zend_Session::destroy( true );
这将删除整个会话,并向客户端发送标头请求以删除与会话关联的任何 Cookie。您也可以将此方法的参数设置为 false 以不删除用户 cookie。但请注意:
Zend_Session::d estroy(true) 必须在 PHP 发送之前调用 必须启用 HTTP 标头或输出缓冲。它将摧毁一切 与当前会话关联的持久数据。然而 PHP 中没有变量受到影响,因此您的命名空间会话 (Zend_Session_Namespace实例)保持可读性。
要删除这些内容,请使用以下方法:
$ns = 'auth'
$namespace = new 'Zend_Session_Namespace( $ns );
$namespace->unsetAll();
详情请看这里
要销毁特定会话,请执行
Zend_Session::namespaceUnset('user');
您可以使用
Zend_Session::destroy($remove_cookie = true, $readonly = true);
查看手册