相同的多域会话,但会话值丢失
Posted
技术标签:
【中文标题】相同的多域会话,但会话值丢失【英文标题】: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_domain
、session.save_path
、session.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 是什么?
【参考方案1】:
搜索不成功后,我在我的 Debian 上重新安装了 apache2。问题已解决,会话值共享成功。
我认为我的 apache2 在 2 个月前被插件安装损坏了。
【讨论】:
以上是关于相同的多域会话,但会话值丢失的主要内容,如果未能解决你的问题,请参考以下文章