【问题标题】:Problem to using session in different subdomain在不同子域中使用会话的问题
【发布时间】:2010-08-11 12:46:24
【问题描述】:

我需要在不同的子域中使用相同的会话。

我先放

php_value session.cookie_domain ".aaaa.com"

在 .htaccess 文件上并将其上传到根路径。

当我需要使用会话时。我只是打电话

session_start();

有时有效,但有时无效。

我对此进行了测试并发现了这一点。

  1. 如果我第一次进入登录页面,然后登录并进入子域页面。有效!

  2. 如果我转到子域页面并单击登录页面并通过 javascript window.location = 'http://sub.aaaa.com'返回子域页面;它不起作用!

  3. 如果我用同一个帐户登录 2 个网络浏览器,它就不起作用!!

还有其他方法吗?或者我该如何解决这个问题。我希望我的网站使用单一登录。

【问题讨论】:

  • 感兴趣的是,在您的 .htaccess 文件中,尝试将 php_value session.cookie_domain ".aaaa.com" 替换为 php_value session.cookie_domain "*.aaaa.com"
  • 您是否也将 htaccess 放入您的子域中?

标签: php session


【解决方案1】:
  1. 确保在您使用会话的每个页面上都有session_start(),包括用户可能看不到的一些页面。

  2. 如果您使用两个 Web 浏览器,则会话彼此独立,这是设计使然。

【讨论】:

  • 并确保 session_start();位于您可能拥有的任何其他 php 代码之前。
【解决方案2】:

要调试您的 #2 问题,请使用 HTTP 监视器(例如 HTTPFox)在您登录和浏览时查看传入/传出服务器的标头,确保使用正确的域正确设置了 cookie,并且路径限制。

问题 #3 - 我不确定你在说什么。您是在使用两个单独的浏览器(比如 Firefox 和 Chrome?),还是您的意思是您正在使用同一个浏览器的两个窗口/选项卡?首先,两个不同的浏览器不会共享 cookie,因此您不能在它们之间共享单个会话,除非在它们之间手动传输 cookie。

对于同一浏览器的两个不同选项卡/窗口,这样的实现取决于您的登录逻辑。如果登录脚本无条件启动一个新会话,那么您的第二次登录尝试将获得与第一次登录完全不同的会话,并且很可能也会覆盖第一次登录的 cookie。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-12
    • 2011-01-27
    • 2021-12-18
    • 2010-10-01
    • 2011-01-30
    • 2012-01-20
    • 1970-01-01
    • 2011-05-12
    相关资源
    最近更新 更多