无法在子域和主域之间共享PHP会话

时间:2018-04-28 13:21:29

标签: php session cookies subdomain session-cookies

我想在子域上进行会话,然后从我的主域访问它。我已经阅读了很多关于同一问题的线索,但没有一个答案对我有用。

我有一个来自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;路径= /

没有提到什么域名?我做错了什么?有什么想法吗?

2 个答案:

答案 0 :(得分:0)

也许这更像是一种解决方法,但......

如果您没有传递任何私人信息,您可以使用$ _GET' s将信息从子域传递到域,然后在域上使用页面(getsession.php)来转换$ _GET&# 39; s到$ _SESSION&s,然后重定向回域名索引,从网址中删除$ _GET。

答案 1 :(得分:0)

这是对Dremhost托管VPS的限制,不允许在虚拟主机(子域)之间共享php会话。我已经切换到另一个提供商,一切正常