【发布时间】:2011-11-14 00:43:58
【问题描述】:
我正在运行 Ubuntu / nginx 和 php-fpm。当我打开我的网站http://www.mydomain.com 时,我必须登录并且PHP 正在创建一个会话。当我登录到http://mydomain.com 时,我必须再次登录,并且正在创建另一个会话。
如何防止 PHP 创建新会话并坚持使用一个?还是这是一个网络服务器问题?
【问题讨论】:
我正在运行 Ubuntu / nginx 和 php-fpm。当我打开我的网站http://www.mydomain.com 时,我必须登录并且PHP 正在创建一个会话。当我登录到http://mydomain.com 时,我必须再次登录,并且正在创建另一个会话。
如何防止 PHP 创建新会话并坚持使用一个?还是这是一个网络服务器问题?
【问题讨论】:
这是因为您的会话基于 cookie,而 cookie 是特定于域的。 www.domain.com 在技术上是domain.com 的子域,尽管它很少被这样对待,并且浏览器将表现得好像它是一个完全不同的服务器。您可以通过将会话 ID 作为适当的 GET(或 POST)参数传递来解决此问题。
请参阅this page 或 PHP 手册以了解如何执行此操作。您真正需要做的就是在所有链接等中包含常量 SID - 这是在您调用 session_start() 时定义的,并且是 URL 参数格式的字符串。
【讨论】:
使用session_set_cookie_params 并将域设置为.mydomain.com。另外session_set_cookie_params需要在每个session_start之前调用
【讨论】:
您需要指定 cookie 域以确保 cookie 对 www 和非 www http://php.net/manual/en/function.session-set-cookie-params.php 均有效
【讨论】: