如果用户不是管理员,我正在使用此会话逻辑,因此他不必访问管理页面功能是否是良好的会话逻辑?方法或我应该使用另一个请进一步指导我。看看这个索引页面我有一些链接必须访问其他成员然后管理员和管理员的所有链接请告诉我你正在使用的网址组件中的链接
<?php
include "config.php";
session_start();
if( (!isset($_SESSION['username'])) && (!isset($_SESSION['type'])) ){
header('location:login.php');
}
if($_SESSION['type'] != 'Administrator')
{
header('location:index.php');
}
?>
index.php
<?php
include "config.php";
session_start();
if(!isset($_SESSION['username']))
{
header('location:login.php');
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-3">
<div class="list-group">
<a href="#" class="list-group-item">Article</a>
<a href="#" class="list-group-item">Categories</a>
<?php
if($_SESSION['type']=='Administrator'){
?>
<a href="#" class="list-group-item">Media</a>
<a href="#" class="list-group-item">tempelate</a>
<a href="test.php" class="list-group-item">Setting</a>
<?php
}else{
?>
<a href="#" class="list-group-item">Profile</a>
<?php
}
?>
<a href="logout.php" class="list-group-item">Logout</a>
</div>
</div>
</body>
</html>
答案 0 :(得分:0)
由于您希望用户无法访问管理页面,因此稍微更健壮的检查可能首先要确定当前页面是否确实admin.php
。如果是,则可以验证type
,以便在授予访问权限之前知道它是否确实设置为Administrator
。
如果未设置或设置为其他内容,则用户可能会被带回index.php
页面。
<?php
include "config.php";
session_start();
$url_components = explode('/', $_SERVER['SCRIPT_NAME']);
$current_url = $url_components[count($url_components) - 1];
if(!isset($_SESSION['username'])){
header('location:login.php');
}
if(!($current_url == 'admin.php'
&& isset($_SESSION['type'])
&& $_SESSION['type'] == 'Administrator')){
header('location:index.php');
}
?>