Zend框架 - Internet Explorer - phpsessid cookie问题

3
我已经创建了一个使用Zend框架的网站应用程序,它需要使用会话(session)。在Chrome和Firefox中它工作得很好,但是在IE中不起作用。每个页面在IE中都会重置会话(session)。
查看头文件后,我发现IE浏览器在同一浏览器中的每个get或post请求中都会获得一个不同的phpsessid cookie,因此会话(session)无法正常工作。在Firefox和Chrome中,phpsessid cookie可以正常持久化。
有人知道为什么只有在IE中会出现这种情况吗?
我在bootstrap.php中有以下代码:
$generalSession  = new Zend_Session_Namespace('MyNameHere');
$generalSession ->setExpirationSeconds(1000 * 60);

我使用以下方法恢复会话:

Zend_Auth::getInstance()->getStorage()->read();

我使用IE9浏览器,为了保护隐私和安全,我的IE配置设置为最低限度。

我尝试在头部放置P3P cookie,但没有任何效果。

我错过了什么吗?

2个回答

4

0

确保在ZF1中启动会话所需的所有内容:

 //in bootstrap.php
 protected function _initsession()
    {
        Zend_Session::start();
    }

这将像普通的PHP一样初始化会话。

除非您在其他地方进行更改Zend_Auth使用Zend_Session_Namespace('Zend_Auth');,因此您创建的任何命名空间都无法访问Zend_Auth。

当您创建Zend_Session_Namespace()的实例时,如果尚未启动会话,则会话将启动。

我不得不想知道每次您的boostrap.php运行(每个请求)时,如果您不在浏览器中获得新的会话ID,那么Zend_Session_Namespace()调用。也许尝试在引导程序中仅调用start,并在需要时实例化命名空间。还有可能您问题中没有提供的某些代码/信息会影响会话。

这里有很多猜测,祝你好运。


感谢您的输入,RockyFord! - Hazon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接