我的网站使用 PHP 会话来跟踪登录用户。每个页面都有 session_start(); 正确实施,但是当我放置 www.chrome 时 在域名中,它不使用会话变量。当我在没有 www 的情况下将其替换回来时。它又可以正常工作了,所以变量不是未设置,而是没有被使用。
奇怪的是,在 Firefox 中,情况正好相反。万维网。有效,没有无效。有没有解决的办法?我遇到了麻烦,因为我正在使用 PayPal 重定向到我的网站,并且我不能让我的用户必须在之后直接注销并重新登录。
我的网站使用 PHP 会话来跟踪登录用户。每个页面都有 session_start(); 正确实施,但是当我放置 www.chrome 时 在域名中,它不使用会话变量。当我在没有 www 的情况下将其替换回来时。它又可以正常工作了,所以变量不是未设置,而是没有被使用。
奇怪的是,在 Firefox 中,情况正好相反。万维网。有效,没有无效。有没有解决的办法?我遇到了麻烦,因为我正在使用 PayPal 重定向到我的网站,并且我不能让我的用户必须在之后直接注销并重新登录。
www.example.com
并且example.com
不是同一个网站。他们通常是,但只是按照惯例。www.example.com
是一个子域example.com
出于这个原因,设置的 cookieexample.com
将不会被使用,www.example.com
反之亦然,因为假设它们是相同的东西是不安全的。
session.cookie_domain
您可以通过将 php.ini 设置设置为.example.com
(当然,替换为您自己的域名)允许会话 cookie 在所有子域以及主域上工作,从而在某种程度上覆盖此行为
您应该在 PHP 中设置 cookie_domain 或确保您的用户只能看到带有 www 或不带 www 的站点。您可以使用 .htaccess(apache 服务器)来完成此操作。
为多个子域设置 cookie 域的示例:
session_set_cookie_params(0, '/', '.example.com');
session_start();