我有一个网站,根据用户是否登录显示导航部分的两个不同版本。
<?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)时会出现问题。
当他们稍后打开浏览器并返回该网站时,导航显示为好像他们没有登录。如果他们然后点击网站上其他地方的链接,即我的帐户,导航然后更改以显示他们已登录。
任何可能导致这种情况的想法?我希望导航显示他们在返回网站后立即登录。
答案 0 :(得分:1)
首先,在任何html之前检查session_start()
,甚至是!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
?>
答案 1 :(得分:0)
必须如下。
ob_start();
session_start();
//code to check session and other
ob_start()
用于省略标头已发送错误。