没有被重定向到登录

时间:2017-06-14 15:01:24

标签: php mysql function

所以我正在尝试让我的登录系统重定向未登录的用户。

<?php ini_set('error_reporting', E_ALL); ?>


<?php require_once '/includes/config.php' ?>
<?php require_once '/includes/functions.php' ?>

<?php $user = new User(); ?>

<?php if (!($user -> LoggedIN())){
    header('login.php');
}
?>

但由于一些奇怪的原因,它不是那样做的。 我在尝试转储

时也得到NULL

$_SESSION['ID']

我的functions.php代码在这里

<?php

class user
{
    function LoggedIN()
    {
        @session_start();
        if (isset($_SESSION['username'], $_SESSION['ID'])){
            return true;
        } else {
            return false;
        }
    }
}

function realIP(){
    switch(true){
        case (!empty($_SERVER['HTTP_X_REAL_IP'])) : return $_SERVER['HTTP_X_REAL_IP'];
        case (!empty($_SERVER['HTTP_CLIENT_IP'])) : return $_SERVER['HTTP_CLIENT_IP'];
        case (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) : return $_SERVER['HTTP_X_FORWARDED_FOR'];
        default : return $_SERVER['REMOTE_ADDR'];
    }
}

//Kijkt of de gebruiker zijn account geblockeerd is
function isBanned($odb)
{
    $SQL = $odb -> prepare("SELECT `status` FROM `users` WHERE `ID` = ?");
    $SQL -> execute(array($_SESSION['ID']));
    $status = $SQL -> fetchColumn(0);
    if ($status == 0){
        return true;
    } else {
        //Blockeert de gebruiker, En logt hem uit
        session_destroy();
        return false;
    }
}

//Kijkt of de gebruiker admin is
function isadmin()
{
    $SQL = $odb -> prepare("SELECT `rank` FROM `users` WHERE `ID` =  ?");
    $SQL -> execute(array($_SESSION['ID']));
    $rank = $SQL -> fetchColumn(0);
    if ($rank == 0){
        return true;
    } else {
        return false;
    }
}


//de login functie (bewaart cookies en http header data door middel van @session_start();
?>

1 个答案:

答案 0 :(得分:1)

您是否错过了标题类型?如果您希望用户被重定向,您需要一个Location标头,例如:

header('Location: login.php');

关于$_SESSION['ID']返回NULL,可以是任何内容。首先,它永远不会在您在此处发布的代码中设置。其次,你忽略了session_start()上的错误(带有@前缀),为什么会这样,是否会返回错误?