标头(';位置:index.php';)不';第一次运行时不起作用


header('location:index.php') doesn't work in the first run

我有一个index.php页面,其中设置了会话($_session['expire'])。这个会话应该在30分钟后取消设置,我们应该重定向到index.php(再次验证用户)。

我的index.php代码的某些部分:

<?php
session_start();
//if user name and password are valid do the following:
$_SESSION['start'] = time(); 
$_SESSION['expire'] = $_SESSION['start'] + (30 * 60) ;
?>
<a href="index.php?action=ContentManager">
    content 
</a>
<?php    
if(isset($_REQUEST['action']))
{
    //if the expiration time has not reached yet do the following
    $now=time();
    if (isset($_SESSION['expire']) && ($now<= $_SESSION['expire'])) 
    {
        switch($_REQUEST['action'])
        {
            case 'ContentManager' : 
              include('model/content.php');
              $contents = getContent($conn, ' where 1=1');
              include('view/contentmanager.php');
              break;
        }
    }
    else if($now > $_SESSION['expire'])
    {
        unset($_SESSION['expire']);
        session_destroy();
        header('location:index.php');
       exit();
    }   
}
?>

问题是,当我在30分钟后点击contentmanager链接时,我们会重定向到一个空页面,网址为:index.php?action=内容管理器

只有当我再次刷新页面时,我们才会重定向到index.php本身,并显示登录表单。

所以breifly:我必须刷新页面两次才能重定向到正确的页面。

提前感谢

使用ob_start();

<?php
session_start();
ob_start();
//if user name and password are valid do the following:
$_SESSION['start'] = time(); 
$_SESSION['expire'] = $_SESSION['start'] + (30 * 60) ;
?>
<a href="index.php?action=ContentManager">
    content 
</a>
<?php    
if(isset($_REQUEST['action']))
{
    //if the expiration time has not reached yet do the following
    $now=time();
    if (isset($_SESSION['expire']) && ($now<= $_SESSION['expire'])) 
    {
        switch($_REQUEST['action'])
        {
            case 'ContentManager' : 
              include('model/content.php');
              $contents = getContent($conn, ' where 1=1');
              include('view/contentmanager.php');
              break;
        }
    }
    else if($now > $_SESSION['expire'])
    {
        unset($_SESSION['expire']);
        session_destroy();
        header('location:index.php');
       exit();
    }   
}
ob_end_flush();
?>