0

我在一个子域(例如 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_idpage5_session_id提供了不同的会话 ID 值。但是,当我在 Internet Explorer 10 的两个不同选项卡中加载两个网页时,它为 page4_session_idpage5_session_id提供了相同的值。

为什么 IE 会这样?这是IE的特性吗?

4

1 回答 1

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().
于 2013-06-19T09:52:17.003 回答