我参与了一个非常棒且有效的网络工具。我决定更改域名,所以我下载了所有内容并将所有内容上传到新域名。
我的登录系统真的很差,但它的工作原理如下:
为了保持子域之间的数据,我在分配$ _SESSION值之前放置了这个:
ini_set("session.cookie_domain", "client.domain.com");
ini_set("session.cookie_domain", "mods.domain.com");
ini_set("session.cookie_domain", "domain.com");
ini_set("session.cookie_domain", "domain.com");
session_start();
$_SESSION['username'] = Other-code;
当然,当我更改域名时,我使用新域名更改了“domain.com”。
可悲的是,我注意到它没有任何理由停止工作.. 我已经在这里检查了所有类似的问题,但是即使我按照它们操作,我也按照自己的意愿执行操作.. $ _SESSION对于子域名是空的。
如果您需要任何其他信息,请与我们联系。 提前谢谢!
答案 0 :(得分:1)
ini_set("display_errors","on")
在第一行查看是否有任何错误。
在前4行中,删除这3行
ini_set("session.cookie_domain", "client.domain.com");
ini_set("session.cookie_domain", "mods.domain.com");
ini_set("session.cookie_domain", "domain.com");
并将最后一行更改为
ini_set("session.cookie_domain", ".domain.com");
登录成功后,登录前请致电session_regenerate_id()
以更改会话ID。正如php-sessions-across-sub-domains中jeroen所建议的那样,您还可以在session_start
之前添加以下2行
$some_name = session_name("some_name");
session_set_cookie_params(0, '/', '.domain.com');
请注意,如果您要添加上面的2行,还需要在登录页面中添加它们。
作为最后一个注释,检查session_start
之前是否有任何输出到浏览器,如果是您的会话设置将无效并且无效