所以我正在尝试让我的登录系统重定向未登录的用户。
<?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();
?>
答案 0 :(得分:1)
您是否错过了标题类型?如果您希望用户被重定向,您需要一个Location标头,例如:
header('Location: login.php');
关于$_SESSION['ID']
返回NULL
,可以是任何内容。首先,它永远不会在您在此处发布的代码中设置。其次,你忽略了session_start()
上的错误(带有@
前缀),为什么会这样,是否会返回错误?