【问题标题】:Can't share PHP sessions between subdomain and main无法在子域和主域之间共享 PHP 会话
【发布时间】:2023-03-09 04:13:01
【问题描述】:

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

我有一个来自 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);

当我导航到文件时的输出:

数组([测试] => 有效)

访问该页面后,我然后转到代码所在的 DOMAIN.com/test.php:

session_start();
print_r($_SESSION);

输出是:

数组( )

我见过类似这样的其他线程: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');

但没有任何效果

我还检查了 HTTP Header Live for FF 的 cookie 设置的域作为这里的答案:Why can't I pass user sessions between subdomains? 和 Set-Cookie 的字符串是:

设置 Cookie:PHPSESSID=9Q%2Cfrhr747fferf4700;路径=/

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

【问题讨论】:

    标签: php session cookies subdomain session-cookies


    【解决方案1】:

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

    如果您没有传递任何私人信息,您可以使用 $_GET 将信息从子域传递到域,然后使用域上的页面 (getsession.php) 将 $_GET 转换为 $_SESSION 并重定向回要从 url 中删除 $_GET 的域索引。

    【讨论】:

    • 这将是登录用户的会话,因此非常私密,不幸的是:(
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      • 2018-06-08
      相关资源
      最近更新 更多