问题
我的域名是 www.example.com 。如果用户登录然后关闭选项卡,然后打开它并转到 www.example.com ,会话将继续完全正常,并且用户已登录。
但是,如果他们键入 example.com (没有 www。),则会显示已注销,如果我放置print_r($_SESSION)
,则不会显示任何内容。但是,单击页面上的任何链接(将用户重定向到 www.example.com/link )将恢复其会话。
因此,当我们输入 example.com 而没有尾随 www 时,我意识到用户已已注销< - >很多用户(比如我自己)经常这样做。
问题
我可以通过以下两种方式解决这个问题:
$_SESSION
适用于任何网址子网(或缺少网址)的方法这些中的任何一个是否可行,如果是,哪个是最佳做法?
答案 0 :(得分:0)
设置会话cookie后,它会使用当前域。但您可以配置此cookie应允许使用通配符域“* .example.com”。这样会话将继续在任一网址上。请注意,通配符域cookie有点不可取,因为它们将被发送到“example.com”的任何子域 - 甚至是您在其他服务器上创建的子域。这可能不是问题,但应该提到。
但真正的解决方案应该是只使用一个指定的域。使用永久重定向代码将用户重定向到此一个域。这也绕过了搜索引擎的重复内容问题(这不是一个惩罚,而是“应该将哪两个URL显示为搜索结果?”的问题。)