Zend Framework - Internet Explorer - phpsessid cookie问题

时间:2012-12-27 01:55:34

标签: internet-explorer zend-framework session session-cookies p3p

我已经创建了Zend Framework网站应用程序密集型会议。

它在Chrome和Firefox中运行良好,但它在IE中不起作用。 会话重置IE中的每个页面。

查看标题我发现IE浏览器在同一浏览器中的每个获取或发布中获取不同的phpsessid cookie,因此会话无法正常工作。在FF和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 个答案:

答案 0 :(得分:4)

我终于用IE解决了这个问题。

事情是,我们的开发服务器是dev_landing.mysite.com,IE拒绝来自名称中带有“_”的网站的标题...这是IE中的设计。

我在这里找到了完整的解释: http://odedpeer.blogspot.com.es/2009/08/why-are-my-http-cookies-rejected-by-ie.html

继续做!!

答案 1 :(得分:0)

您需要确保session starts in ZF1 is

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

这将初始化会话,就像在vanilla PHP中一样。

除非您将其更改为Zend_Auth uses the Zend_Session_Namespace('Zend_Auth');,否则Zend_Auth将无法访问您创建的任何命名空间。

当您创建Zend_Session_Namespace()的实例时,会话将在尚未启动的情况下启动。

我不得不怀疑,如果你没有在资源管理器中获得新的会话ID,每次你的boostrap.php运行(每个请求)Zend_Session_Namespace()都会调用。 也许尝试只需在引导程序中调用start,然后在需要时实例化名称空间。您的问题中没有的某些代码/信息也可能会影响会话。

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