php - PHP:检查管理员是否登录,重定向他们并确保正确的访问
问题描述
我有一个名为 game.php 的用户页面,他们可以在其中更新他们的个人资料等。所以当管理员登录时,他们仍然可以访问 game.php,但我不希望他们这样做。我该如何预防?
我有 2 个不同的登录页面,1 个用于普通用户(logreg.php),1 个用于管理员(admin.php)
这是我的 game.php 代码,它们限制管理员访问并将我重定向回 logreg.php。
用户的状态将是“gamer” - 普通用户或“admin” - 用于管理员登录。
<?php
session_start();
ob_start();
if (!isset($_SESSION["username"], $_SESSION['status'])) {
$_SESSION['username'] = $username;
$_SESSION['status'] = 'admin';
header("Location:logreg.php");
}
else {
$username = $_SESSION['username'];
}
?>
但问题是:我如何检查用户是否在 admin.php(管理员登录页面)上以管理员身份登录并将他们重定向到管理站点而不是再次登录,同时还要确保“游戏玩家”可以'不访问管理站点?它指出我的网站已将我重定向太多次。
这是我的 admin.php 代码
<?php
session_start();
ob_start();
if (!isset($_SESSION["username"], $_SESSION['status'])) {
$_SESSION['username'] = $username;
$_SESSION['status'] = 'gamer';
header("Location:admin.php");
}
else {
$username = $_SESSION['username'];
$_SESSION['status'] = 'admin';
header("Location:adminpage.php");
}
?>
提前致谢!!!!
解决方案
太长的评论,但无代码的答案......
实际上,我认为您想要的是拥有一个login.php
处理用户登录的页面。在该页面上,首先确保用户名/密码匹配。然后查看权限级别,看看他们是管理员还是玩家(或将来的其他人?)。设置会话变量以指示用户已通过身份验证和用户权限级别 - 管理员或播放器(这为将来添加“主持人”等提供了灵活性)
admin.php
检查会话以查看用户是否已通过身份验证,并且用户具有管理员权限。如果他们没有然后取消所有会话变量并重定向到主页或登录页面。如果您想变得友善,请在执行此操作之前检查他们是否是经过身份验证的用户,如果是则重定向到game.php
。
检查会话以查看用户是否已通过game.php
身份验证,并且该用户没有管理员权限。如果他们确实具有管理员权限,请打印一条消息,提醒管理员在以管理员身份登录时无法玩游戏,并提供指向admin.php
and的链接logout.php
(这将取消设置所有会话变量并重定向到login.php
)。然后检查以确保您拥有经过身份验证的游戏玩家,如果没有,则也弹logout.php
回(并再次返回login.php
)。
推荐阅读
- javascript - 在 .map 函数中设置 React 状态而不覆盖状态
- reactjs - 如何模拟组件中使用的 AuthService 服务类进行测试?
- flutter - 带有颤动块的控件小部件
- javascript - 如何在重复的div中添加索引?(javascript)
- python - 从“data-linkid”获取文本的美丽汤
- r - curl :: curl_fetch_memory(url,handle = handle)中的错误:发送失败:连接已重置(RStudio.cloud)
- xcode - Xcode 11.2 未更新
- c++ - 在 Desktop Duplication API 中获取帧之间的 CPU 使用率高,超时间隔不同
- python - 根据 pandas 中的其他数据框过滤一个数据框
- node.js - ES5如何在数据类上实现.Net IEqualityComparer进行比较?