所以我试图让我的登录系统重定向未登录的用户。
<?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();
?>
最佳答案
您缺少 header 类型吗?如果您希望用户被重定向,您需要一个 Location header ,例如:
header('Location: login.php');
关于 $_SESSION['ID']
返回 NULL
,可以是任何东西。首先,它永远不会在您在此处发布的代码中设置。其次,您忽略了 session_start()
上的错误(带有 @
前缀),这是为什么,它是否返回错误?
关于php - 没有被重定向到登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44548358/