必须登录两次。 Chrome和Opera的PHP会话和登录麻烦

时间:2010-03-08 23:40:13

标签: php session redirect header

我遇到的问题是,对于我的登录表单,我必须登录两次才能正确注册会话,但仅限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/,它将重定向到主页并说“你还没有登录!”但如果我再去那里会说“你已经登录了!”。有什么想法吗?

感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

尝试在发出重定向标头之前添加sleep(2);;这会告诉你它是否实际上是代码中的错误,或者会话数据是否没有足够快地写入文件。

答案 1 :(得分:1)

我遇到了同样的问题。我只是简单地删除了www。在标题部分。

然后它对我来说很好。它将是这样的:标题('Location:http://my-domain-name.com/');

答案 2 :(得分:0)

如上所示,您的代码似乎会导致无限重定向循环,主页调用session_start(),设置cookie,并指示浏览器加载主页。这里提供的代码是否缺少某些逻辑?