域和子域的 PHP 会话
Posted
技术标签:
【中文标题】域和子域的 PHP 会话【英文标题】:PHP session for domain and sub domains 【发布时间】:2013-08-27 21:45:29 【问题描述】:这是我在基于 php 的 webapp 中启动会话的代码
session_set_cookie_params(24*60*60, "/", ".exdomain.com");
session_start();
我想要的是在所有子域之间保持相同的会话说:
www.exdomain.com
ajax.exdomain.com
这里是子域
ajax.exdomain.com
用于服务用户的ajax请求现在发生了什么,用户通过www.exdomain.com登录时 一个新的 PHPSESSID="91252ec9310ae1c80f44c7e885cf7dfe" 从萤火虫创建 PHPSESSID cookie 设置如下:
PHPSESSID=91252ec9310ae1c80f44c7e885cf7dfe | .exdomain.com | 41乙| / | 2013 年 8 月 29 日上午 03:02:09
现在,当通过 ajax 子域(即 ajax.exdomain.com)发出请求时,正在为此请求创建一个新会话,实际上为每个 ajax 请求创建一个新的 PHPSESSID。 如何防止ajax请求新会话的形成。
【问题讨论】:
您是否为两个子域配置了相同的session_set_cookie_params()
?换句话说,ajax.exdomain.com
是否知道也使用.exdomain.com
作为会话 cookie 的域?
两者都使用相同的文件/功能进行登录验证/会话管理。
检查this question它可能对你有帮助。
【参考方案1】:
您需要在.htaccess 或php.ini 中设置会话域
php_value session.cookie_domain ".exdomain.com"
【讨论】:
以上是关于域和子域的 PHP 会话的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring Security 中的子域之间共享会话