首页 > 解决方案 > PHP:检查管理员是否登录,重定向他们并确保正确的访问

问题描述

我有一个名为 game.php 的用户页面,他们可以在其中更新他们的个人资料等。所以当管理员登录时,他们仍然可以访问 game.php,但我不希望他们这样做。我该如何预防?

我有 2 个不同的登录页面,1 个用于普通用户(logreg.php),1 个用于管理员(admin.php)

这是我的 game.php 代码,它们限制管理员访问并将我重定向回 l​​ogreg.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");
    }
?> 

提前致谢!!!!

标签: phphtmlmysql

解决方案


太长的评论,但无代码的答案......

实际上,我认为您想要的是拥有一个login.php处理用户登录的页面。在该页面上,首先确保用户名/密码匹配。然后查看权限级别,看看他们是管理员还是玩家(或将来的其他人?)。设置会话变量以指示用户已通过身份验证和用户权限级别 - 管理员或播放器(这为将来添加“主持人”等提供了灵活性)

admin.php检查会话以查看用户是否已通过身份验证,并且用户具有管理员权限。如果他们没有然后取消所有会话变量并重定向到主页或登录页面。如果您想变得友善,请在执行此操作之前检查他们是否是经过身份验证的用户,如果是则重定向到game.php

检查会话以查看用户是否已通过game.php身份验证,并且该用户没有管理员权限。如果他们确实具有管理员权限,请打印一条消息,提醒管理员在以管理员身份登录时无法玩游戏,并提供指向admin.phpand的链接logout.php(这将取消设置所有会话变量并重定向到login.php)。然后检查以确保您拥有经过身份验证的游戏玩家,如果没有,则也弹logout.php回(并再次返回login.php)。


推荐阅读