我想在子域上进行会话,然后从我的主域访问它。我已经阅读了很多关于同一问题的线索,但没有一个答案对我有用。
我有一个来自Dreamhost的VPS,我在两个域上都将以下行放入phprc(phprc被添加到php.ini,dreamhost编辑php.ini的方式)session.cookie_domain =" .MAINDOMAIN。 COM"其中.MAINDOMAIN.com正在申请我的域名。这是这里的工作解决方案:Sharing SESSION Variables Between Multiple Subdomains
我已经制作了一个php文件,我在login.DOMAIN.com和DOMAIN.com上调用了test.php
登录login.DOMAIN.com/test.php我有以下代码:
session_start();
$_SESSION['test'] = "Works";
print_r($_SESSION);
导航到文件时的输出:
Array([test] => Works)
访问该页面后,我转到DOMAIN.com/test.php,代码为:
session_start();
print_r($_SESSION);
输出是:
Array()
我见过这样的其他线程:Allow php sessions to carry over to subdomains有4个不同的选项来设置php.ini行(直接在php.ini中,在.htaccess中,在脚本中,最后是php-fpm池配置)我已经尝试了所有这些,除了最后一个使用php-fpm池配置
在session_start:
之前,我还试图在我的php文件之上设置这一行session_set_cookie_params(0,"/",".MAINDOMAIN.com",FALSE,FALSE);
最重要的是:
session_name('mysession');
但没有任何作用
我还检查了FF Header Live for FF wich domain,将cookie设置为答案:Why can't I pass user sessions between subdomains?,Set-Cookie字符串为:
Set-Cookie:PHPSESSID = 9Q%2Cfrhr747fferf4700;路径= /
没有提到什么域名?我做错了什么?有什么想法吗?
答案 0 :(得分:0)
也许这更像是一种解决方法,但......
如果您没有传递任何私人信息,您可以使用$ _GET' s将信息从子域传递到域,然后在域上使用页面(getsession.php)来转换$ _GET&# 39; s到$ _SESSION&s,然后重定向回域名索引,从网址中删除$ _GET。
答案 1 :(得分:0)
这是对Dremhost托管VPS的限制,不允许在虚拟主机(子域)之间共享php会话。我已经切换到另一个提供商,一切正常