首页 > 解决方案 > 来自另一个页面的会话变量在子域上不可见

问题描述

登录.php

session_start();
$_SESSION['aid'] = 1;
echo $_SESSION['aid']; // 1

然后index.php

session_start();
echo $_SESSION['aid']; // nothing is echoed  
$_SESSION['test'] = 323;
echo $_SESSION['test']; // 323

错误日志

PHP Notice: Undefined index: aid in...

这只发生在我的子域
上 - 主域上的 admin.example.com - example.com - 一切正常,这也只发生 在我的本地主机
上的远程服务器上 - - 没关系
xampp, win7, chrome

有什么帮助吗?

标签: phpsession

解决方案


您应该在开始会话之前将 cookie 域设置为“.example.com”(在所有子域上的所有脚本上,否则 cookie 甚至在不同的(子)域上都无效。

session.cookie_domain = ".example.com"

或使用session_set_cookie_params()

session_set_cookie_params(0, '/', '.example.com');
session_start(); 

另请参阅此问题: 允许 php 会话转移到子域


推荐阅读