无法打印/访问$ _SESSION?

时间:2011-11-24 23:32:31

标签: php session

这是我的代码:

// Save stuff to session
$_SESSION['uid'] = $uid;
$_SESSION['name'] = $user_profile[name];

// Redirect to test page
header( 'Location: http://www.justwalk.it/test.php' ) ;

如果我打印会话而不是重定向,我会毫无问题地得到它:

Array ( [uid] => xx [rank] => xx  [name] => xx ) 

然而,当在test.php中重定向时,我已经无法打印会话了。 test.php中唯一的代码是:

<? session_start();
print_r($_SESSION);?>

但它会打印array()$_SESSION['uid']根本不会返回任何内容。

我不相信会话未被设置,因为它有时会弹出我页面上的其他位置。它根本无法访问。我不知道为什么。我究竟做错了什么?或者如果我没有做错什么可能是造成这个问题的原因?

3 个答案:

答案 0 :(得分:0)

检查在session_start()之前是否向浏览器发送HTML或其他内容... 您还可以将error_reporting设置为E_ALL并检查日志文件。

答案 1 :(得分:0)

如果没有代码取消设置会话,则可能值得检查您是否使用URL的非www版本访问原始脚本,然后重定向到www。

正如T1000所提到的,另一个原因可能是在session_start()之前发送输出,UTF8 BOM字符因引起有时不可见的输出而臭名昭着。

答案 2 :(得分:0)

在test.php中,检查session_start()是否未返回FALSE,表示无法创建或恢复会话:

if (! session_start()) die "OMG, total session asplosion.";

如果这是问题所在,您可能需要查看错误日志以确定问题所在。 (实际上,错误日志中有什么内容?)