【问题标题】:New session for every domain name每个域名的新会话
【发布时间】:2011-11-14 00:43:58
【问题描述】:

我正在运行 Ubuntu / nginx 和 php-fpm。当我打开我的网站http://www.mydomain.com 时,我必须登录并且PHP 正在创建一个会话。当我登录到http://mydomain.com 时,我必须再次登录,并且正在创建另一个会话。

如何防止 PHP 创建新会话并坚持使用一个?还是这是一个网络服务器问题?

【问题讨论】:

    标签: php session nginx


    【解决方案1】:

    这是因为您的会话基于 cookie,而 cookie 是特定于域的。 www.domain.com 在技术上是domain.com 的子域,尽管它很少被这样对待,并且浏览器将表现得好像它是一个完全不同的服务器。您可以通过将会话 ID 作为适当的 GET(或 POST)参数传递来解决此问题。

    请参阅this page 或 PHP 手册以了解如何执行此操作。您真正需要做的就是在所有链接等中包含常量 SID - 这是在您调用 session_start() 时定义的,并且是 URL 参数格式的字符串。

    【讨论】:

      【解决方案2】:

      使用session_set_cookie_params 并将域设置为.mydomain.com。另外session_set_cookie_params需要在每个session_start之前调用

      【讨论】:

        【解决方案3】:

        您需要指定 cookie 域以确保 cookie 对 www 和非 www http://php.net/manual/en/function.session-set-cookie-params.php 均有效

        【讨论】:

        • 唯一的问题是您依赖客户来尊重该指令,但是是的,这是一个更简单的解决方案,因为您没有以任何其他方式修改您的代码...
        猜你喜欢
        • 1970-01-01
        • 2017-06-17
        • 2012-03-15
        • 1970-01-01
        • 1970-01-01
        • 2013-10-02
        • 2021-03-25
        • 2011-06-11
        • 1970-01-01
        相关资源
        最近更新 更多