为什么我的命名PHP会话不能被调用?

时间:2013-11-20 03:42:10

标签: php session cookies

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

登录脚本

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

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

目前我使用

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

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

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

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

在我添加$ _SESSION的自定义名称之前,这工作正常。

任何帮助都会非常感激,因为这个问题困扰了我很长一段时间,也就是说。当我真正进入浏览器的Cookies时,我看到了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();

?>

1 个答案:

答案 0 :(得分:1)

我的猜测是你错过了其他(不是登录脚本)文件中的会话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';