【问题标题】:Session variables not getting unset on subdomain after unset on main domain在主域上取消设置后,会话变量未在子域上取消设置
【发布时间】:2014-02-28 11:46:09
【问题描述】:

我已经设置好了,所以我可以在我使用代码的子域脚本上跨主域和子域共享会话数据:

ini_set('session.cookie_domain', COOKIE_DOMAIN);

session_start();

COOKIE_DOMAIN 等于 .domain.com

使用此代码后,会话在子域上显示正常,但是当它们通过以下代码在主域上取消设置时:

unset($_SESSION[SESSION_PREFIX.$variable]);

它们在主域而不是子域上未设置。

【问题讨论】:

  • 这不是“破坏会话”,这只是取消设置会话数组中的某些条目。如果您在子域上运行一个并发脚本实例,它可能只是将该数据 back 写入您的会话,因为此时它仍在其 $_SESSION 数组中。为了让我们能够看到真正发生了什么,您必须提供更详细的信息,说明您在何时何地所做的事情。
  • 好吧,我想我使用了错误的术语。我会改变我的问题。

标签: php session


【解决方案1】:

解决方法是将其设置在您的 php.ini 中......

session.cookie_domain = ".mydomain.com"

【讨论】:

  • 所以问题很可能是您使用ini_set在子域上操纵此设置 - 所以当会话在主域上启动时,它使用了cookie 域的不同设置,因此它对子域不可见。如果您从一开始就在两个域上使用ini_set,那也将“修复”它。
  • 其实我确实尝试在两个域上都使用它,但没有成功。
猜你喜欢
  • 1970-01-01
  • 2016-10-01
  • 2013-02-17
  • 2018-03-16
  • 2014-03-14
  • 2013-04-16
  • 2012-12-02
  • 1970-01-01
相关资源
最近更新 更多