使用IE6 / IE7时,PHP会话/ cookie无法正确存储

时间:2009-07-07 18:48:05

标签: php cookies internet-explorer-6 internet-explorer-7 session

我们有一个本地内部网站点,网络上的每个人都使用它。也许5%(甚至更少)使用该网站的用户遇到会话未正确存储的问题。

我尝试手动定义路径(C:/Coookieess)并检查发生了什么。虽然大多数用户的会话都已创建并保持正常,但在受影响的计算机上似乎忘记了cookie或者无法读取它们,然后几乎每次页面刷新时都会创建一个新的cookie

值得注意的是......

  • 仅影响<5%的用户
  • 只有在使用IE
  • 时才会发生
  • 无论使用何种机器
  • ,都会遇到这些用户
  • 它只发生在Windows XP或Vista上 - Windows 2000工作正常!

我也试过搞乱IE中的安全设置,更改cookie安全性以允许所有cookie /会话,但遗憾的是没有运气:(

任何帮助都会很棒。我真的很困惑。

谢谢!

8 个答案:

答案 0 :(得分:3)

只是一个随机的想法,可能不相关,但值得一提 - 以防万一 - 在您遇到问题的计算机上正确设置日期和时间?

答案 1 :(得分:2)

我遇到了完全相同的问题,发现在开始会话之前添加P3P标头已经纠正了它。

header('P3P: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"');

session_start();

答案 2 :(得分:1)

您可能想要检查另一件事:他们是否使用任何类型的代理?

我在其中工作的一个PHP项目似乎在应用程序在Intranet上运行时遇到了麻烦。事实证明,所有IE安装都已设置为通过公司代理运行,这似乎一次又一次搞砸......

答案 3 :(得分:0)

当网站感觉不存在或从前一个请求传递时,可以创建一个新的cookie ...

网站,您的网络或客户端是否存在导致cookie哈希不在请求之间传播的内容?

使用HTTP分析器(fiddler,nettool)查找。

答案 4 :(得分:0)

还没有足够的信息继续下去,但可能发生的一件事是,如果你将会话存储在cookie中,你可能最终得到的cookie太大,IE无法处理。

“太大”的定义因浏览器和操作系统而异,但不同。

答案 5 :(得分:0)

您的内部域名中是否有下划线?即http://dev_server.example.net

使用下划线作为DNS字符有点模糊。 FF / Safari可以正常工作,但如果来自带有下划线的域 IE将无法设置cookie

大多数公共注册商会阻止您使用不良字符,但内部没有任何阻止您。

答案 6 :(得分:0)

我们在很久以前遇到过一个与此相似的问题 - 零星的外观,只影响旧的IE用户。

当时任何资源或评论都非常朦胧,所以我们从来没有完全能够诊断出这个问题 - 我们发现的最接近的信息是IE与g-zipped数据不一致。

无论如何 - 解决方案我们发现修复了我们的问题 -

  1. 通过PHP手动设置内容类型标头,同时删除HTML声明
  2.   

    header(“content-type:text / html; charset = utf-8”);

    1. 将您的站点设置为发送P3P(紧凑型安全策略)标头。

      请参阅http://www.sitepoint.com/article/p3p-cookies-ie6/2/

答案 7 :(得分:0)

是否有5%的用户拥有用户信息,当从cookie中检索时,会破坏cookie服务器端的正确读取/解码/解析?