Php 子域上的会话仍不工作

Php 子域上的会话仍不工作,php,session,Php,Session,几个小时前,我在这里创建了一个关于切换到www时不再存在的会话的线程。。这应该已经解决了这个问题: session_set_cookie_params(0, '/', '.'.$_SERVER['HTTP_HOST']); 根据php.net和其他网站上的几个例子,这应该是正确的。当不使用www.访问网站,然后切换到www.时,会话仍然有效(我仍将其记录),但由于一些非常奇怪的原因,现在使用www.时无法在网站上创建会话(以便登录) 因此,我可以在不使用www时登录,我可以切换到www。因此会

几个小时前,我在这里创建了一个关于切换到www时不再存在的会话的线程。。这应该已经解决了这个问题:

session_set_cookie_params(0, '/', '.'.$_SERVER['HTTP_HOST']);
根据php.net和其他网站上的几个例子,这应该是正确的。当不使用www.访问网站,然后切换到www.时,会话仍然有效(我仍将其记录),但由于一些非常奇怪的原因,现在使用www.时无法在网站上创建会话(以便登录)

因此,我可以在不使用www时登录,我可以切换到www。因此会话仍然存在,但我无法在使用www时登录

有人能解释一下这种行为吗?我该如何解决?另外,使用该服务器是否安全


谢谢大家!

如果您从www.example.com请求一些资源,cookie将设置为
.www.example.com
,因此它将仅对www.example.com及其所有子域有效,而对example.com无效

只需先删除前导的
www.
,然后再预加
,例如:

$domain = '.' . preg_replace('/^www\./', '', strtolower($_SERVER['HTTP_HOST']));

很可能
$\u服务器['HTTP\u HOST']
www.example.com
,而不是
example.com
。如果您想测试它,您可以通过替换
$\u服务器
。。。使用实际的
'.example.com'