【问题标题】:Same multi-domain session but session values lost相同的多域会话,但会话值丢失
【发布时间】:2012-11-08 09:37:01
【问题描述】:

我的多域网站上的会话有问题。

事实上,我已经:

  • www.website.com

  • my-account.website.com

在 php.ini 中,我设置了:session.cookie_domain = ".website.com"

我检查它是否正确更改为 phpinfo(); 并且没关系,我对两个网站(域和子域)的值相同:

  • 同一个session.cookie_domainsession.save_pathsession.cookie_path

  • session.cookie_lifetime = 0 和 session.cookie_secure 关闭

好吧,现在,当我尝试一些测试时:

  • 在 www.website.com 上定义 session_name,启动会话,定义 un session 值,如 $_SESSION["test"] = "myvalue";,然后我显示 session_id。
  • 转到 my-account.website.com 并打开具有相同会话名称的会话,我检查会话 ID 并发现与 www.website.com 相同的 ID,但我丢失了我定义的会话值. S_SESSION["test"] 丢失。

结论,会话 id 被保留,但会话值丢失。

有什么想法吗?我有检查更改session_set_cookie_params(0, '/', '.website.com'); 在每个网站上。并尝试使用 htaccess php_value session.cookie_domain ".website.com"

帮帮忙,这让我发疯了。

【问题讨论】:

  • 您的托管环境是否使用suhoshin patchset?它可用于使用它们来自的域(以及其他域)加密会话值,因此一个域无法读取其他域的 cookie。 (在共享主机中很有用)
  • 我不在共享主机上,而是在 OVH 私人服务器上,Debian 6 和 Apache。但这很奇怪,因为我在 3 个月前处理过子域之间的共享会话并且效果很好,但是当我在 1 周前再次处理它时,没有任何效果:/ 重新启动和重新启动 apache 和服务器解决任何问题。
  • phpinfo() 告诉你是否有 sushoshin,但如果我没记错的话,debian 上的默认 php 安装包括它。检查this answer它可能会有所帮助。
  • 好的,我尝试在任何 .htaccess 上使用php_value suhosin.session.cryptdocroot off 关闭 sushoshin。 session_set_cookie_params(0, '/', '.website.com'); session_start();回声 session_id().'
    ';回声 $_SESSION["test"];我在 my-account.website.com 上定义了 TEST 我尝试在此处显示它。 Session_ID 相同,但 www.website.com 上的 TEST 丢失。
  • 苏霍辛与此无关。如果是这样 - 您将不会获得与会话 cookie 中包含的唯一内容相同的会话 ID。你的 session.save_path 是什么?

标签: php session subdomain session-variables session-cookies


【解决方案1】:

搜索不成功后,我在我的 Debian 上重新安装了 apache2。问题已解决,会话值共享成功。

我认为我的 apache2 在 2 个月前被插件安装损坏了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-18
    • 2012-01-30
    • 2017-12-03
    • 2013-08-10
    • 2012-05-09
    • 2012-06-03
    • 1970-01-01
    相关资源
    最近更新 更多