未登录时获取Zend Framework数据库会话数据

时间:2012-09-09 07:39:56

标签: php zend-framework

我无法找到任何关于如何提取第一次访问网页时由php自动插入的会话数据的明确信息。

我正在使用通常的方法使用application.ini将会话存储到数据库中。所以现在,我需要获取未登录的sessionid。我用什么命名空间来获取数据?这是我的application.ini

resources.session.saveHandler.class = "Zend_Session_SaveHandler_DbTable"

resources.session.saveHandler.options.name = "sessions"
resources.session.saveHandler.options.primary = "id"
resources.session.saveHandler.options.modifiedColumn = "modified"
resources.session.saveHandler.options.dataColumn = "data"
resources.session.saveHandler.options.lifetimeColumn = "lifetime"

现在,我看到当一个人访问该网站时,它会添加一个会话,但我如何才能访问该会话数据?

我只知道如何在用户登录时设置会话命名空间,但是当没有登录时我不会手动创建会话或任何东西,所以我迷路了。

我无法弄清楚如何以更清晰的方式提出这个问题。

寻找符合

的内容
$NonLoggedInSession = new Zend_Session_Namespace('Zend_Session_namesapce(?)');
$NonLoggedInSession -> sessionid // should return something like 21hir1GI31!1gotig1 (the session id it created in the database)

1 个答案:

答案 0 :(得分:1)

Zend_Session::getIterator()应该返回一个包含所有Zend_Session_Namespace个对象的可迭代对象。

Zend_Session::getId()可能就是您要找的,这将返回当前会话cookie的值,至少在我的应用程序中是这样。

检索该会话cookie的名称Zend_Session::getOptions('name')

请记住,我用来测试这些调用的应用程序不会显式设置任何会话cookie。我确实使用Zend_Session_Namespace来保存应用程序中各个点的数据。因此,任何会话cookie集都是Zend Framework Defaults的结果。

返回到我的应用程序的值与我在Firefox中查看cookie时显示的值相匹配。

相关问题