我无法找到任何关于如何提取第一次访问网页时由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)
答案 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时显示的值相匹配。