我有3个网站:
在这种情况下,如果站点在同一台服务器上,在IE中(并且仅在IE中),所有站点都具有相同的php会话ID。这意味着会话以某种方式在它们之间共享。 我不想要这种行为,我希望他们能够分开会议。
有人可以为我提供任何解释以及处理此事的任何建议吗?
(如果我有没有aaa部分的域名,一切都会运作良好。)
答案 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');