【问题标题】:PHP Session variables lost either with www or without [duplicate]PHP 会话变量丢失了 www 或没有 [重复]
【发布时间】:2013-02-01 17:58:08
【问题描述】:

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

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

【问题讨论】:

  • wwwwithout www 在会话 cookie 方面不同。你应该选择一个。这就是为什么像 SO 这样的网站会强制他们的访问者删除 www。此外,在不同(子)域上拥有两个完全相同的网站也不是一个好习惯。
  • 听起来会话cookie设置为在特定域下运行。我实际上不知道这是如何完成的,但您可以检查会话 cookie 设置。要么每次都从www(或返回)重定向

标签: php session-variables


【解决方案1】:

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

因此,example.com 上设置的 cookie 不会在 www.example.com 上使用,反之亦然,因为假设它们是相同的东西是不安全的。

您可以通过将 php.ini 设置 session.cookie_domain 设置为 .example.com(替换为您自己的域名,或当然)

【讨论】:

【解决方案2】:

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

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

session_set_cookie_params(0, '/', '.example.com'); 
session_start(); 

【讨论】:

    猜你喜欢
    • 2011-12-05
    • 2014-08-14
    • 1970-01-01
    • 2012-12-19
    • 2011-04-15
    • 2014-08-23
    • 1970-01-01
    相关资源
    最近更新 更多