Php 子域和ini_集之间的会话

Php 子域和ini_集之间的会话,php,session,Php,Session,我开发了一个非常好用的网络工具。我决定更改域名,所以我下载了所有内容,并将所有内容上传到新域名上 我的登录系统很差,但它的工作原理如下: 在domain.com/login.php上提供电子邮件/密码,在同一页面上,系统检查数据库中是否存在这些电子邮件/密码 如果是,则用户的所有信息都存储在$\u会话中 之后,您将重定向到client.domain.com 在这里,如果设置了$\u SESSION['username',您就可以了。如果没有,您将被重定向回登录页面 为了保持子域之间的数据,我

我开发了一个非常好用的网络工具。我决定更改域名,所以我下载了所有内容,并将所有内容上传到新域名上

我的登录系统很差,但它的工作原理如下:

  • 在domain.com/login.php上提供电子邮件/密码,在同一页面上,系统检查数据库中是否存在这些电子邮件/密码
  • 如果是,则用户的所有信息都存储在$\u会话中
  • 之后,您将重定向到client.domain.com
  • 在这里,如果设置了$\u SESSION['username',您就可以了。如果没有,您将被重定向回登录页面
为了保持子域之间的数据,我在分配$\u会话值之前放置了以下内容:

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”

遗憾的是,我发现它无缘无故地停止了工作。。 我已经在这里检查了所有类似的问题,但是即使我按照他们的要求做了我应该做的事情$_子域的会话为空

如果你需要任何其他信息,请告诉我。 提前谢谢

ini\u在第一行设置(“显示错误”,“打开”)
,查看是否有任何错误

在前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\u regenate\u id()
更改会话id。如jeroen在中所建议的,您还可以在
session\u启动之前添加以下两行

$some_name = session_name("some_name");
session_set_cookie_params(0, '/', '.domain.com');
请记住,如果您要添加上面的2行,您还需要在登录页面中添加它们


最后,请注意,在
会话_start
开始之前,检查是否有任何输出到浏览器,如果是这样您的会话设置将不活动且不起作用

可能有重复的人正在构建他们的第一个XSFR脚本,它将启动错误报告,然后更新您的帖子以包含错误内容,如果有的话。@FunkFortyNiner已经试过了。如果未注意到未定义的索引(例如,我使用$\u SESSION['id']显示一些信息),则会显示任何警告/错误)“我的登录系统非常糟糕,但它的工作方式如下所示
”-您确定与正在使用的db代码没有关联吗?服务器的php版本,使用的api。。。等等,这可能是任何东西。如果你说它过去有用,那么某处出了问题。谢谢你的帮助。无论如何,一切都没有改变。一旦进入子域,这就是$_会话上的var_转储的结果:数组(0){}已检查并尝试过,但没有更改$_会话仍然是空的。您可以在您的问题上发布您的phpinfo吗?我已经编辑了我的答案,您现在可以试试吗。另外,为了您自身的安全,请不要在pastebin上发布敏感数据。不过你网站上的模板不错。我是古斯塔;)