php - 如何正确终止 zend 框架中的 session ?

标签 php zend-framework session

这是我设置 session 的方式

$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 保持不变。删除与客户端关联的所有 session 的正确方法是什么?

如果我这样做

$this->sess->admin = 0;

然后它起作用了,但我怀疑这是我持有的每个 session 变量的正确方法。

我也试过

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

它没有工作,它没有关闭任何 session 。

最佳答案

要删除与客户端关联的所有 session ,请使用:

\Zend_Session::destroy( true );

这将删除整个 session 并向客户端发送 header 请求以删除与该 session 关联的任何 cookie。您也可以将此方法的参数设置为 false 以不删除用户 cookie。但请注意:

Zend_Session::destroy(true) must either be called before PHP has sent HTTP headers, or output buffering must be enabled. It will destory all of the persistent data associated with the current session. However, no variables in PHP are affected, so your namespaced sessions (instances of Zend_Session_Namespace) remain readable.

要删除它们,请使用以下方法:

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

Please see here for further information

关于php - 如何正确终止 zend 框架中的 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10515439/

相关文章:

ruby-on-rails-3 - Rails 3.2 ActiveRecord session 存储不工作

php - password_hash() 不工作

php - php future 版本的未定义常量文件

zend-framework - Zend Navigation Menu View Helper - 所有链接都一样吗?

zend-framework - Zend session : Common session at multi apps

node.js - Express 4 的 Connect-mongo 替代方案

php - Laravel 通过关系搜索

PHP 维基标记解析器

zend-framework - Zend Framework 11.1.9 Action 执行两次

mysql - 连接到 MySQL Zend Framework 时遇到问题