通过一些解决方案进行搜索,这些解决方案似乎都不适用于我。像这样的大多数解决方案:HERE似乎指向使用:
session_set_cookie_params(0, '/', '.domain.com');
session_start();
我要么不理解帖子,要么执行不正确。我有以下域名并通过domain.com登录
domain.com
sub.domain.com
我在domain.com上的login.php生活的顶部实现了上面的代码
登录后我设置$_SESSION[id] = xyz;
我在sub.domain.com上的index.php页面顶部有session_start();
当我在domain.com上var_dump($_SESSION);
时,我获得了返回的值。
当我在sub.domain.com上尝试时,我得到array(0) { }
我也尝试将下面的代码放在sub.domain.com的顶部,但仍然没有得到任何结果。
session_set_cookie_params(0, '/', '.domain.com');
session_start();
显然我做错了什么,但我不知道是什么。 感谢。
答案 0 :(得分:1)
1,一种方法是配置你的php.ini文件,如下所示:
session.cookie_domain = .domain.com
2,其次是使用ini_set();
ini_set('session.cookie_domain', '.domain.com');
3,第三个是使用session_set_cookie_params(),你的错误就在这里。有关它的详细信息,请看:http://php.net/manual/en/function.session-set-cookie-params.php
The effect of this function only lasts for the duration of the script. Thus, you need to call session_set_cookie_params() for every request and before session_start() is called.
所以,您需要为每个请求调用该方法。
答案 1 :(得分:0)
我想解释一下为我解决了什么问题。使用“session.cookie_domain”是唯一对我有用的方法。
我有3个文件:
login.php - in domain.com
user_home.php - in domain.com
sub_index.php - in sub.domain.com
我将以下代码添加到每个文件的顶部,没有任何解决方法:
ini_set('session.cookie_domain', '.domain.com');
session_start();
原因是因为login.php是通过domain.com上的index.php访问的,我没有将代码添加到index.php - 登录位于/index.php?script=login
一旦我将代码包含在所有相关文件的顶部,var_dump($ _ COOKIE)在domain.com和sub.domain.com上显示PHPSESSID的相同值
希望它可以帮助别人。