当前位置:  开发笔记 > 编程语言 > 正文

PHP会话不适用于IE

如何解决《PHP会话不适用于IE》经验,为你挑选了3个好方法。

我有一个用php制作的网站,它使用整个网站的服务器端会话.
实际上,它是一个具有用户登录的站点,它依赖于会话变量,如果所有会话变量都存在问题,则根本不会加载任何页面.

在网站上,有一个iframe,其中包含来自其他用户的小消息.
这些小消息旁边有可点击的照片,用于打开用户的个人资料.
现在,每个页面都需要一些格式来打开该特定页面上的用户配置文件...实际上只有几个问题页面,但这些页面必须具有稍微不同的onclick功能或者它们会破坏页面.
所以我在每个页面上设置了一个会话变量($_SESSION["current_page"]),让Feed知道如何格式化可点击的照片.现在Firefox,Opera,Chrome,Safari都可以正常工作.
但IE6和IE7在需要特殊格式的页面上遇到问题.
所以在把我的头发拉了一下之后,我终于开始从服务器打印我的会话变量了.
并且,在特殊页面上,($_SESSION["current_page"])始终设置为"main"而不是"special1"或"special2".

我在Firefox和我提到的所有其他浏览器中打印了相同的会话变量,并且它们打印出"special1"或"special2".
谁能想到一些东西 - 可能与饲料在iframe中的事实有关? - 这将导致IE以不同方式处理服务器端会话变量或以某种方式在后台静默启动页面"main"?
我已经非常仔细地检查了feed以查找对"main"页面的任何引用 - 它似乎没有任何方式它正在加载该页面.

这对我没有意义.



1> Kieveli..:

检查服务器计算机的名称.IE包含" - "或"_"的机器名称存在问题 - 它们无法维护会话!我过去曾经遇到过这个问题两次,而且总是需要几个星期的时间来弄清楚,而且我很震惊,IE还没有解决它.

只需将机器重命名为没有奇怪的字符!如果您只是使用网址中服务器的IP地址进行测试,则可以使其正常工作.


实际上,这是"按预期打破":DNS名称不应包含下划线(根据RFC).所有其他浏览器都容忍它们,但IE以其无限的智慧,只是默默地丢弃这些网站的cookie.没有迹象,没有任何迹象.无价.

2> Sijin..:

IE在处理iFrame时遇到cookie问题,这可能导致你提到的会话问题,看看这些链接

http://adamyoung.net/IE-Blocking-iFrame-Cookies

http://gathadams.com/2007/06/25/how-to-set-third-party-cookies-with-iframe-facebook-applications/

http://nileshtrivedi.in/blog/2008/09/01/iframe-cookies-and-internet-explorer/


"问题"并不是一个正确的总结.IE故意限制跨域IFRAME中的cookie,除非存在P3P策略.

3> Piskvor cc-b..:

尝试使用某种监控代理(我使用Fiddler)测试页面并查看浏览器请求的页面.这可能会为你提供一些线索.

此外,尝试捕获来自不同浏览器的请求/响应,并查看IE正在做什么不同(请求的顺序,请求的内容?).

为了查明问题,您是否可以在使用SESSION的情况下重写代码(在其他答案之一中提到过)?也许IE浏览器的访问顺序与其他浏览器不同?也许它不止一次地请求主页面,这意味着会话var设置为"main"?如果没有会话变量,页面将不会影响彼此的状态.


重写Web应用程序并不总是一种选择.不仅如此,它还没有解决原始问题 - 只是改变它周围的一切.肖恩:你有没有找到原因或解决方案?
推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有