session保存 - php session配置



我有一个网站使用PHP的网站使用服务器端会话。
事实上,这是一个依赖于会话变量的用户登录站点,如果所有会话变量都有问题,则根本不会加载页面。

在该网站上,有一个内嵌框架,其中包含来自其他用户的小消息源。
这些小消息旁边有可点击的照片,打开用户的个人资料。
现在,每个页面都需要一些格式来打开用户在该特定页面上的配置文件...实际上只有几个问题页面,但是这些页面必须具有格式不同的onclick函数,否则会打乱页面。
所以我在每个页面上设置了一个会话变量( $_SESSION["current_page"] ),让提要知道如何格式化可点击的照片。 现在,Firefox,Opera,Chrome,Safari都可以正常工作。
但IE6和IE7在需要特殊格式的页面上有问题。
所以在把我的头发拉出来之后,我终于从服务器上打印了会话变量。
而且,在特殊页面上,( $_SESSION["current_page"] )总是设置为“main”,而不是“special1”或“special2”。

我在Firefox和我提到的所有其他浏览器中打印了相同的会话变量,并打印出“special1”或“special2”。
任何人都可以想到的东西 - 可能与饲料在iframe的事实有关? - 这会导致IE来处理服务器端会话变量不同或以某种方式启动页面“主”在后台默默地?
我已经非常仔细地检查了饲料的任何参考页“主要” - 它似乎没有任何方式加载该页面。

这对我没有意义。


Answer #1

会话数据存储在服务器端,而不是客户端。 我会检查其他页面,这个值将被设置。


Answer #2

尝试使用某种监视代理(我使用Fiddler )来测试页面,并查看浏览器请求的页面。 这可能会给你一些线索,发生什么事情。

另外,尝试捕获来自不同浏览器的请求/响应,看看IE做了什么不同(请求的顺序,请求的内容?)。

为了查明问题,您是否可以使用SESSION来重写代码(在其他答案中提到过)? 也许IE浏览器以不同于其他浏览器的顺序访问页面? 也许它是多次请求主页面,这意味着会话var被设置为“main”? 没有会话变量,页面不会影响彼此的状态。


Answer #3

检查服务器机器的名称。 IE浏览器在包含“ - ”或“_”的机器名称方面存在问题 - 他们无法维护会话! 过去我曾经遇到过两次这样的问题,但总是需要花费我几个星期的时间才能弄清楚,而且我感到震惊的是,IE并没有解决这个问题。

只需重命名机器就没有奇怪的字符! 如果您只是使用url中服务器的IP地址进行测试,您可以使用它。


Answer #4

我有这个问题,这是由于我的开发盒上的日期被列出。 Firefox并不介意,IE和Chrome浏览器一旦设置就会看到会话过期。


Answer #5

在大多数情况下,这个PHP文件开始行将是足够的:

header('P3P: CP=”NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM”');

如果不是,对于IE7你也可以尝试:

header('P3P: CP=”NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM”');

header('Set-Cookie: SIDNAME=ronty; path=/; secure');

header('Cache-Control: no-cache');

header('Pragma: no-cache');

如果这不适用于IE6,您可以使用会话ID的GET参数:

header('location: land_for_sale.php?phpSESSID='.session_id());

Answer #6

也许是session.cookie_lifetime 。 我面临同样的问题。 我更新session.cookie_lifetime: 4500session.cookie_lifetime:0 。 这意味着会话cookie不会过期,直到浏览器关闭。


Answer #7

我发现如果你添加header('P3P: CP="CAO PSA OUR"'); 到您的文档的顶部。 似乎已经解决了这个问题。





session