不需要的共享会话

时间:2016-12-06 09:11:58

标签: php internet-explorer

我有3个网站:

  • bbb.aaa.com
  • ccc.bbb.aaa.com
  • ddd.bbb.aaa.com

在这种情况下,如果站点在同一台服务器上,在IE中(并且仅在IE中),所有站点都具有相同的php会话ID。这意味着会话以某种方式在它们之间共享。 我不想要这种行为,我希望他们能够分开会议。

有人可以为我提供任何解释以及处理此事的任何建议吗?

(如果我有没有aaa部分的域名,一切都会运作良好。)

1 个答案:

答案 0 :(得分:0)

您可以将会话名称从默认PHPSESSID更改为每个站点的自定义名称。您可以使用session_name

执行此操作
// change the session name for bbb.aaa.com
session_name('PHPSESSID_bbb_aaa_com');

将使用该名称创建一个cookie名称,每个域都是唯一的。

然后,您可以更改每个域的Cookie的domain属性。您可以通过更改php.ini文件上的session.cookie_domain来完成此操作。

; instead of allows all the subdomain with ".aaa.com", specify them with:
session.cookie_domain = bbb.aaa.com

您也可以在运行时使用session_set_cookie_params

然而,这还不够!如果会话ID相同,即使您使用了不同的会话名称,也会加载相同的数据,如果会话信息存储在共享文件夹中,则 。要解决此问题,您可以将session.save_path配置指令更改为每个域的唯一文件夹。您可以在运行时使用session_save_path

执行此操作
session_save_path('/path/to/sess_for_bbb_aaa_com');