域名 -> 子域名 - 传递会话数据

5

你好,这里遇到了一些问题。

我在domain.co.uk设置了一个会话。但是当我点击domain.co.uk上的链接前往sub.domain.co.uk时,会话并没有被读取。

我已经将session.cookie_domain更改为.domain.co.uk,但仍然无法正常工作。还有其他需要更改的内容吗?

谢谢,我。


你应该看一下这个链接:https://dev59.com/r3NA5IYBdhLWcg3wKam3 - Lizard
我已经查看过了,并且在页面中有session_set_cookie_params(0,'/','.domain.co.uk'); - Phil Jackson
我有一个主页面,根据变量和是否为子域(使用通配符子域)包含文件。 - Phil Jackson
这两个域名是否由同一个 PHP 代码库处理? - Bart van Heukelom
遇到了同样的问题,发现这个答案对我有用:PHP跨子域会话 - Kyle
Phil,如何指定基于通配符的子域?例如session_set_cookie_params(0, '/', 'prefix*.domain.com')? - Siva
5个回答

1

在你的htaccess文件中

php_value session.cookie_domain ".domain.co.uk"

完成了


如果只有domain.co.uk而没有www,那会有问题吗? - yardpenalty.com

0

这段简单的代码会对你有很大帮助,试一试吧,它百分之百有效。

<?php 
session_set_cookie_params(0, '/', '.domain.co.uk'); 
session_start(); 
?>

0

存储在Cookie中的会话ID信息。 如果由主域设置,子域无法读取cookie。请参见session_name(),setcookie()和session_id() PHP函数的信息。或将会话ID存储在其他地方(例如MySQL数据库)。 附注:抱歉我的英语。


0

我同意GOsha的观点,

我通过提交表单数据或存储在SQL来完成所有的会话交接。然后在新的域环境中重新创建您的会话。

我不确定是否有更简单的方法?

不确定这是否有帮助。

谢恩


将其作为表单数据传递需要通过SSL进行传递,否则可能会发生会话劫持,除非对其进行序列化和加密等处理。 - grandnasty

0

会话数据存储在 cookie 中,如果您在域名 google.com 上,则只有域名 google.com 可以访问 cookie 会话数据,例如用户名或会话 ID。

dev.google.com 无法访问 google.com 的 cookie,这意味着当用户转到 dev.google.com 时,已登录 google.com 的用户将无法继续保持登录状态。除非有某种机制,例如通过查询字符串将会话 ID 传递给 dev.google.com。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接