PHP标头功能不起作用

时间:2013-06-07 05:09:22

标签: php header

以下标题功能无效。如果用户没有登录,我会尝试登录 -

    <?PHP
    if (logged_in() === false) {
    header('Location: login.php');
    }
    ?>

但如果我这样做 -

    <?PHP
    if (logged_in() === false) {
    echo"No user is logged in";
    }
    ?>

它回应它,我可以看到它说没有用户登录

基本上只是检查是否有用户登录

    function logged_in() {
    return (isset($_SESSION['user_id'])) ? true : false;
    }

3 个答案:

答案 0 :(得分:2)

尝试将退出()或()置于标题之后

  if (logged_in() === false) {
      header('Location: login.php');
      exit();    //or die();
  }

但是要确保你的login.php应该在同一个文件夹中

答案 1 :(得分:1)

确保代码中没有输出(也是空格)。

您可以使用ob_start()和ob_end_flush()来清除输出。

<?php ob_start();

 // code 

ob_end_flush(); ?>

答案 2 :(得分:0)

您可能需要包含新网址的完全限定域和路径。 header function的官方文档中有一条注释,表明了这一点。

  

注意:

     

HTTP / 1.1需要绝对URI作为»Location:includes的参数   方案,主机名和绝对路径,但有些客户接受   相对URI。你通常可以使用$ _SERVER ['HTTP_HOST'],   $ _SERVER ['PHP_SELF']和dirname()从a创建一个绝对URI   相对一个人:

本说明还包含以下代码示例。

<?php 
/* Redirect to a different page in the current directory that was requested */ 
$host  = $_SERVER['HTTP_HOST']; 
$uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\'); 
$extra = 'login.php';
header("Location: http://$host$uri/$extra"); 
exit; 
?>