主页不会立即识别会话PHP

时间:2013-02-15 01:50:26

标签: php session

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

<?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)时会出现问题。

当他们稍后打开浏览器并返回该网站时,导航显示为好像他们没有登录。如果他们然后点击网站上其他地方的链接,即我的帐户,导航然后更改以显示他们已登录。

任何可能导致这种情况的想法?我希望导航显示他们在返回网站后立即登录。

2 个答案:

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