为什么不是';无法调用我的命名PHP会话


Why isn't my named PHP session able to be called?

我已经发布了类似的内容,但我重新设计了整个系统。我为帐户创建了一个单独的子域,而不是原来的系统。我在从命名会话中获取任何变量时遇到问题。我正在尝试跨子域传输用户信息,用于登录和跟踪目的。无论如何,这是代码。

登录脚本

<?php
session_name('LoginSession');
session_set_cookie_params(0, '/', '.ueteribus.com');
session_start();
?>

该代码只是告诉将$_SESSION分布到所有域的代码。(或者至少应该是这样)无论如何,LoginSession名称就是问题所在。如果添加了它,那么我就无法使用调用脚本显示任何内容。

目前我使用

$_SESSION['USERNAME_ueteribus']
$_SESSION['PASSWORD_ueteribus']
$_SESSION['loginsession21']

这些是我使用的主要$SESSIONS,目前我无法在给Cookie指定任何特定名称时显示它们。

这是我用来按名称调用实际$_SESSION的当前脚本。

<?php
session_name('LoginSession');
session_start();
echo $_SESSION['loginsession21'];
?>

在我添加$_SESSION的自定义名称之前,这一切都很好。

任何帮助都将不胜感激,因为这个问题已经困扰我很长时间了。。当我真正进入浏览器上的Cookie时,我会看到LoginSession,但它列在主域下。www.XXXX.com而非account.XXXX.com。不管怎样,不知道这是否正常。。我们可以要求您提供任何其他信息,并感谢您提供的任何帮助。

注意:上面列出的所有脚本和代码都保存在帐户子域中!

更新:

我刚试过这个代码,但它仍然不起作用。

<?php
session_name('LoginSession');
session_set_cookie_params(0, '/', '.ueteribus.com');
session_start();
echo $_SESSION['loginsession21'];
?>

我还把这个脚本添加到了每一页的顶部。

<?php
session_set_cookie_params(0, '/', 'ueteribus.com');
session_start();
?>

我的猜测是,您在其他文件(而不是登录脚本)中缺少会话cookie配置。就像session_name()一样,您需要在每次请求时调用它,并在session_start()之前调用它(尽管其他评论者可能会相信)。

<?php
session_name('LoginSession');
session_set_cookie_params(0, '/', '.ueteribus.com');
session_start();
// of course this line will only work if you've previously set the "loginsession21" key
echo $_SESSION['loginsession21'];
?>

更新

更改会话名称或cookie参数后,您需要从浏览器中清除旧cookie。

您还需要确保会话不会在代码中的任何其他地方启动。

我建议将所有会话配置内容移到一个文件中,并将其包含在每个可请求页面的顶部。同时删除对session_start()的任何和所有其他调用。

<?php
// session_config.php
session_name('LoginSession');
session_set_cookie_params(0, '/', '.ueteribus.com');
session_start();

然后,在其他脚本中

<?php
// some_other_script.php
require_once __DIR__ . '/relative/path/to/session_config.php';