在登录页面上,我设置了一个具有ID的会话变量(我们假设ID 1始终是admin)。当用户浏览到只有管理员有权访问的页面时,check.php
充当中间人,以检查是否设置了会话变量,如果该变量设置为1,则它将把用户重定向到管理员页面,如果不是,则显示另一个页面。这是我的代码:
<?php
include "connection.php";
session_start();
#Check to see if session variables are set properly. Only the administrator can have access to this page
if(!isset($_SESSION) || $_SESSION['id'] != 1) {
header('Location: restricted.php');
die();
} else {
header('Location: admin.php');
die();
}
?>
当我进入登录页面并使用管理员凭据成功登录,并尝试使用check.php页面时,需要我进入admin.php。如果我不登录,它仍然会将我带到管理页面。
此脚本的确切问题是什么?
答案 0 :(得分:2)
因为如果不满足条件,则else将执行。在else中更改重定向或创建另一组条件。
if(!isset($_SESSION) || $_SESSION['id'] != 1) { // CONDITION NOT MET
header('Location: restricted.php');
die();
} else {
header('Location: admin.php'); // REDIRECT OCCURS
die();
}