我有一个网站,根据用户是否登录,显示两个不同版本的导航部分。
<?php
if(isset($_SESSION['myusername'])){
echo '<a href="'.$baseRoot.$defaultPage.'?com=logout&cxid='.uniqid(),'">Log Out</a>';
}else{
echo '<a href="'.$baseRoot.$defaultPage.'?com=login&cxid='.uniqid(),'" class="signupbutton">Sign Up</a>';
}
?>
当用户登录后关闭浏览器而不注销时(并假设他们在浏览器退出时没有清除缓存/cookie),就会出现问题。
当他们稍后打开浏览器并返回网站时,导航显示为他们没有登录。如果他们随后单击网站上其他地方的链接,即我的帐户,导航将更改为显示他们已登录。
你知道是什么原因造成的吗?我希望导航显示他们在返回网站后立即登录。
首先,检查session_start()
是否出现在任何html之前的页面上,甚至是!DOCTYPE规则。
现在,在您的索引页面上添加以下内容:
<?php
session_start();
if(isset($_SESSION['username'])){
header("location: home.php"); // or whatever page you want your users to be redirected to...
}else {
?>
// here your html page should start
<html><head></head><body>
// all the DOM elements on your page
</body></html>
<?php
} // closing end of the else block started above
?>
必须如下所示。
ob_start();
session_start();
//code to check session and other
ob_start()
用于省略标头已发送错误。