0

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

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

当他们稍后打开浏览器并返回该站点时,导航显示就好像他们没有登录一样。如果他们随后单击站点上其他地方的链接,即My Account,则导航将更改为显示他们已登录在。

有什么想法可能导致这种情况吗?我希望导航显示他们在返回站点后立即登录。

4

2 回答 2

1

首先,检查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  
  ?>
于 2013-02-15T03:23:38.230 回答
0

必须如下。

ob_start();
session_start();
//code to check session and other

ob_start()用于省略标头已发送错误。

于 2013-02-15T03:34:23.287 回答