几个小时前,我在这里创建了一个关于会话的线程,这个会话在切换到www时不再存在。这应该已经解决了这个问题:
session_set_cookie_params(0, '/', '.'.$_SERVER['HTTP_HOST']);
根据php.net和其他网站上的几个例子,这应该是正确的。什么时候去网站而不使用www。然后切换到www。会话仍然有效(我仍然记录它),但由于一些非常奇怪的原因,使用www时无法在网站上创建会话(以便登录)。现在
所以我可以在不使用www时登录,我可以切换到www。因此会话仍然存在,但使用www时无法登录。
任何人都可以解释一下这种行为以及我如何解决这个问题?另外,使用该服务器是否安全?
谢谢!
答案 0 :(得分:5)
如果您从 www.example.com 请求某些资源,则Cookie将设置为.www.example.com
,因此它仅适用于 www.example.com < / em>及其所有子域名,但不是 example.com 。
在添加www.
之前,只需删除前导.
,例如:
$domain = '.' . preg_replace('/^www\./', '', strtolower($_SERVER['HTTP_HOST']));
答案 1 :(得分:1)
$_SERVER['HTTP_HOST']
可能是www.example.com
,而不是example.com
。如果您想对其进行测试,则可以通过将$_SERVER
...替换为实际的'.example.com'
来进行硬编码。