1

我的网站使用 PHP 会话来跟踪登录用户。每个页面都有 session_start(); 正确实施,但是当我放置 www.chrome 时 在域名中,它不使用会话变量。当我在没有 www 的情况下将其替换回来时。它又可以正常工作了,所以变量不是未设置,而是没有被使用。

奇怪的是,在 Firefox 中,情况正好相反。万维网。有效,没有无效。有没有解决的办法?我遇到了麻烦,因为我正在使用 PayPal 重定向到我的网站,并且我不能让我的用户必须在之后直接注销并重新登录。

4

2 回答 2

8

www.example.com并且example.com不是同一个网站。他们通常是,但只是按照惯例。www.example.com是一个子域example.com

出于这个原因,设置的 cookieexample.com将不会被使用,www.example.com反之亦然,因为假设它们是相同的东西是不安全的。

session.cookie_domain您可以通过将 php.ini 设置设置为.example.com(当然,替换为您自己的域名)允许会话 cookie 在所有子域以及主域上工作,从而在某种程度上覆盖此行为

于 2013-02-01T18:01:21.170 回答
3

您应该在 PHP 中设置 cookie_domain 或确保您的用户只能看到带有 www 或不带 www 的站点。您可以使用 .htaccess(apache 服务器)来完成此操作。

为多个子域设置 cookie 域的示例:

session_set_cookie_params(0, '/', '.example.com'); 
session_start(); 
于 2013-02-01T18:02:19.417 回答