我需要在不同的子域中使用相同的会话。
首先我放
php_value session.cookie_domain ".aaaa.com"
在.htaccess文件上并将其上传到根路径。
当我需要使用会话时。我只是打电话给
session_start();
有时候它会起作用但有时却不起作用。
我对此进行了测试并发现了。
如果我是第一次登录页面,请登录并转到子域名页面。它有效!
如果我转到子域名页面并点击登录页面并通过javascript window.location ='http://sub.aaaa.com'返回子域名页面;它不起作用!!
如果我使用同一帐户在2个网络浏览器上登录,则无法使用!!
还有其他方法吗?或者我该如何解决这个问题。我希望我的网站使用单一登录。
答案 0 :(得分:0)
确保您使用会话的每个页面上都有session_start()
,包括一些可能对用户不可见的页面。
如果您使用两个网络浏览器,会话彼此独立,这是设计使然。
答案 1 :(得分:0)
要调试您的#2问题,请使用HTTP监视器(例如HTTPFox)在您登录和浏览时查看来自/来自服务器的标头,确保使用正确的方式正确设置Cookie域和路径限制。
Probm#3 - 我不确定你得到了什么。您使用的是两个单独的浏览器(比如Firefox和Chrome吗?),还是说您使用的是同一浏览器的两个窗口/标签?对于第一种,两种不同的浏览器不会共享cookie,所以你不能在它们之间共享一个会话,而不需要做一些黑客手动在它们之间传输cookie。
对于同一浏览器的两个不同选项卡/窗口,此类实现取决于您的登录逻辑。如果登录脚本无条件地启动新会话,那么第二次登录尝试将从第一次登录时获得完全独立的会话,并且很可能也会覆盖第一个登录的cookie。