主页没有立即识别会话PHP


Homepage not immediately recognizing session PHP

我有一个网站,根据用户是否登录,显示两个不同版本的导航部分。

<?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()用于省略标头已发送错误。