我想限制控制面板上的某些页面。我知道互联网上有很多信息,而且大部分问题都已被提出。但我仍然无法弄清楚为什么它对我不起作用。
所以我尝试将以下内容添加到控制面板上的其中一个页面:
<?php
if (!session_id()) {
session_start();
}
if (!$_SESSION['u_id']){
header("Location: fout.php?message=paginaontoegankelijk");
die();
}
include_once 'header1.php';
include 'includes/dbh.inc.php';
?>
因此,当有人试图在没有登录的情况下进入页面时,它将拒绝。它工作得很好。我想让只有u_id =='hans'的人可以访问此页面,所以我尝试将代码更改为:
<?php
if (!session_id()) {
session_start();
}
// If u_id isnt same as 'hans' redirect to fout.php
if (isset($_SESSION ['u_id']) != 'hans'){
header("Location: fout.php?message=paginaontoegankelijk");
die();
}
include_once 'header1.php';
include 'includes/dbh.inc.php';
?>
不知怎的,这不起作用,当我这样做时,我仍然可以使用其他帐户访问它。
$_SESSION['u_id'] = $row['gebruiker_id'];
答案 0 :(得分:3)
您的isset($_SESSION ['u_id'])
未返回字符串。它返回一个布尔值(true或false)。
你必须使用:
if (isset($_SESSION['u_id']) && $_SESSION['u_id'] != 'hans')) {
答案 1 :(得分:0)
使用此代码检查变量是否存在以及检查其值:
if (isset($_SESSION ['u_id']) && $_SESSION['u_id'] != 'hans')
isset()
PHP的功能:
确定变量是否已设置且不是NULL
并返回boolean
:
如果var存在且值不是NULL,则返回TRUE。否则为FALSE。