IE不传递PHP会话变量

IE不传递PHP会话变量,php,internet-explorer-8,session-variables,firefox3.6,php-5.2,Php,Internet Explorer 8,Session Variables,Firefox3.6,Php 5.2,我正在尝试跨多个页面使用会话变量。但是,当我从设置变量的原始页面转到服务器上的另一个页面时,这些变量就会消失。我已经确认变量最初是在第一页上设置的,但是当我试图在后续页面上访问它们时,它们没有值。如果我访问会话id()它与我在第一页上设置的不同 以下是我尝试做的一个简化版本: (设置会话变量的第一页) (我尝试访问会话变量的第二页) $\u SESSION['id']返回空白,我有一个输出错误,说明: 注意:第5行C:\Program Files\Apache Software Foun

我正在尝试跨多个页面使用会话变量。但是,当我从设置变量的原始页面转到服务器上的另一个页面时,这些变量就会消失。我已经确认变量最初是在第一页上设置的,但是当我试图在后续页面上访问它们时,它们没有值。如果我访问
会话id()
它与我在第一页上设置的不同

以下是我尝试做的一个简化版本: (设置会话变量的第一页)


(我尝试访问会话变量的第二页)


$\u SESSION['id']
返回空白,我有一个输出错误,说明:

注意:第5行C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\pagetwo.php中的未定义索引:id

现在事情变得有点奇怪了。并非所有浏览器都会出现这种情况(仅IE8和Firefox3)。我能够访问Chrome15和Firefox7中的会话变量。另外,我有两个不同的服务器运行Apache和PHP。我遇到这些问题的服务器运行的是PHP5.2.17,而我的另一台服务器运行的是PHP5.2.9,我可以访问所有浏览器类型中所有页面的会话变量

这两台服务器之间的PHP.ini文件似乎有所不同,但是,它们之间的会话设置是相同的


我不确定是否有其他人遇到过类似的问题,IE8无法访问PHP5.2.17中的会话变量,但我在过去两天搜索了表单,没有找到类似的其他内容。我希望我错过了一些非常简单的东西,有人可以给我指出正确的方向。

我怀疑这是因为在将用户重定向到pagetwo.php之前,您没有关闭会话变量。我建议在设置代码中的
ID
值后,添加一个
session\u write\u close()
。它确保将更改添加到会话变量中,并可在以后的页面上检索

<?php 
session_start();
$_SESSION['id'] = session_id();
session_write_close();
header('Location: pagetwo.php'); 
?>

您可以在上阅读更多关于
session\u write\u close()
的信息,如果向下滚动到用户提供的评论,您将看到一位名叫JP的人对这个问题的评论


干杯

我在开发facebook应用程序时遇到了同样的问题——IE没有发送会话cookie,因此每个页面请求都会启动一个新的页面请求。下面的标题为我解决了这个问题:

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

使用开发工具,您可能会看到会话cookie没有存储在IE上。。。会话数据不是特定于浏览器的,因为它是服务器端的,但是会话的整个前提是基于cookie。您还应该使用isset()来避免异常。
<?php 
session_start();
$_SESSION['id'] = session_id();
session_write_close();
header('Location: pagetwo.php'); 
?>
header('P3P: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"');