我有一个用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"页面的任何引用 - 它似乎没有任何方式它正在加载该页面.
这对我没有意义.
检查服务器计算机的名称.IE包含" - "或"_"的机器名称存在问题 - 它们无法维护会话!我过去曾经遇到过这个问题两次,而且总是需要几个星期的时间来弄清楚,而且我很震惊,IE还没有解决它.
只需将机器重命名为没有奇怪的字符!如果您只是使用网址中服务器的IP地址进行测试,则可以使其正常工作.
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/
尝试使用某种监控代理(我使用Fiddler)测试页面并查看浏览器请求的页面.这可能会为你提供一些线索.
此外,尝试捕获来自不同浏览器的请求/响应,并查看IE正在做什么不同(请求的顺序,请求的内容?).
为了查明问题,您是否可以在不使用SESSION的情况下重写代码(在其他答案之一中提到过)?也许IE浏览器的访问顺序与其他浏览器不同?也许它不止一次地请求主页面,这意味着会话var设置为"main"?如果没有会话变量,页面将不会影响彼此的状态.