我遇到的问题是,对于我的登录表单,我必须登录两次才能正确注册会话,但仅限Chrome(我的版本是4.0.249.89)和Opera(我的版本是10.10)。
以下是我正在测试的精简代码:
登录页面:
在session_start();
$_SESSION['user_id'] = 8;
$_SESSION['user_name'] = 'Jim';
session_write_close();
header('Location: http://www.my-domain-name.com/');
exit();
主页:
session_start();
if ( isset($_SESSION['user_id']) )
{
echo "You are logged in!";
}
else
{
echo "You are NOT logged in!";
}
退出页面:
session_start();
session_unset();
session_destroy();
header('Location: http://www.my-domain-name.com/');
exit();
目前,在没有cookie的新负载下,如果我转到my-domain-name.com/login/,它将重定向到主页并说“你还没有登录!”但如果我再去那里会说“你已经登录了!”。有什么想法吗?
感谢您的帮助。
答案 0 :(得分:3)
尝试在发出重定向标头之前添加sleep(2);
;这会告诉你它是否实际上是代码中的错误,或者会话数据是否没有足够快地写入文件。
答案 1 :(得分:1)
我遇到了同样的问题。我只是简单地删除了www。在标题部分。
然后它对我来说很好。它将是这样的:标题('Location:http://my-domain-name.com/');
答案 2 :(得分:0)
如上所示,您的代码似乎会导致无限重定向循环,主页调用session_start(),设置cookie,并指示浏览器加载主页。这里提供的代码是否缺少某些逻辑?