PHP 会话与子域共享
我读过很多关于在子域之间传递会话变量的论坛(包括这个),但我无法让它工作。有人可以解释我缺少什么吗?
步骤 1
在 php.ini
文件中:
session.cookie_domain = ".mydomain.example"
使用 phpinfo()
验证我使用的是正确的 php.ini 文件
步骤 2
在 www.mydomain 的页面中。例如
设置一个会话变量$_SESSION['a']
,通过在下一页上调用它来验证它是否出现(确实如此)。单击 sub.mydomain.example
的链接。
sub.mydomain.example
的第 3 步
页面检查是否使用以下方式设置了会话变量:
$a = $_SESSION['a'];
if(!isset($_SESSION['a'])){
echo "Error: Session Variable not available";
}
不幸的是,我收到了错误消息。我缺少什么?
I have read many forums (including this one) about passing session variables between subdomains, and I can't get this to work. Can someone explain what I am missing?
Step 1
In the php.ini
file:
session.cookie_domain = ".mydomain.example"
Verified with phpinfo()
that I am using the right php.ini file
Step 2
In page at www.mydomain.example
set a session variable $_SESSION['a']
, verify that it appears by calling it on the next page (it does). Click link to sub.mydomain.example
.
Step 3
Page at sub.mydomain.example
checks if session variable is set using:
$a = $_SESSION['a'];
if(!isset($_SESSION['a'])){
echo "Error: Session Variable not available";
}
Unfortunately I am getting my error message. What am I missing?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您必须将会话 ID 作为 Cookie 传递,并在新域上设置相同的会话 ID
例如,您可以使用以下代码
You must pass the session id as a cookie and set the same session id on the new domain
For example you can use this code
调试。
是你缺少的东西。
首先,您必须查看 HTTP 标头以了解发生了什么以及实际设置了哪些 cookie。您可以使用 LiveHTTPHeaders Firefox 插件或其他东西。有了这些信息就可以找到问题所在。没有它,没有人可以回答游览问题“我的会话不起作用”
它可以证明您在会话设置中正确设置域的声明。或者反驳它。
它可以揭示一些其他错误配置。
它可能会向您显示浏览器发回的 cookie - 因此您可以确定这是服务器端问题
查看代码的实际结果(而不是根据间接后果进行猜测)总是有帮助的。
debugging.
is the thing you're missing.
first of all you have to watch HTTP headers to see what is going on and what cookies actually being set. You can use LiveHTTPHeaders Firefox addon or something. With such info you can find the problem. Without it noone can answer tour question "my sessions don't work"
It can prove your statement of proper domain setting in the session settings. Or disprove it.
It can reveal some other misconfiguring.
It may show you cookie being sent back by the browser - so you can be sure that is server side problem
To see the actual result of your code (instead of guessing based on the indirect consequences) always helps.
所以,我走了不同的方向并使用了这个有效的条目......
So, I went a different direction and used this entry which worked...