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