IE中不同子域的相同session_id()值

时间:2013-06-19 09:26:29

标签: php internet-explorer cross-browser subdomain sessionid

我在一个子域(例如abc.example.com)中有一个网页名称page1.php。 page1.php的内容如下。

<?php
session_start();

$session_id = session_id();

echo "page4_session_id : ".$session_id."<br />";

?>

然后我在另一个子域(例如xyz.example.com)中将另一个网页名称作为page2.php。 page2.php的内容如下。

<?php
session_start();

$page5_session_id = session_id();

echo "page5_session_id : ".$page5_session_id."<br />";

?>

当我在Google Chrome或Fire Fox浏览器中运行这两个页面时,这些页面为 page4_session_id page5_session_id 提供了不同的会话ID值。但是,当我在Internet Explorer 10中的两个不同选项卡中加载两个网页时,它为 page4_session_id page5_session_id 提供了相同的值。

为什么IE会像那样?这是IE的一个功能吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试指定会话Cookie域有效性?

//for page1.php
session_set_cookie_params(time()+3600, "/", "abc.example.com");

//for page2.php
session_set_cookie_params(time()+3600, "/", "xyz.example.com");

来自php.net的函数session_set_cookie_params

Set cookie parameters defined in the php.ini file. The effect of this function only lasts for the duration of the script. Thus, you need to call session_set_cookie_params() for every request and before session_start() is called.

This function updates the runtime ini values of the corresponding PHP ini configuration keys which can be retrieved with the ini_get().