这是我的代码:
// 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']
根本不会返回任何内容。
我不相信会话未被设置,因为它有时会弹出我页面上的其他位置。它根本无法访问。我不知道为什么。我究竟做错了什么?或者如果我没有做错什么可能是造成这个问题的原因?
答案 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.";
如果这是问题所在,您可能需要查看错误日志以确定问题所在。 (实际上,错误日志中有什么内容?)