You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

$_SESSION['user_level']权限验证失效问题求助

问题分析与修复方案

我帮你找到了两个核心问题,这就是为什么你的权限控制没生效的原因:


1. 登录逻辑中未正确获取用户级别(user_level)

在你的server.php登录处理部分,你执行了数据库查询但没有从结果集中取出用户数据行,直接调用$row['user_level']会导致这个变量为空,自然无法正确设置$_SESSION['user_level']。

修复后的登录代码片段:

// LOGIN USER
if (isset($_POST['login_user'])) {
    $useremail = mysqli_real_escape_string($db, $_POST['useremail']);
    $password = mysqli_real_escape_string($db, $_POST['password']);

    if (empty($useremail)) {
        array_push($errors, "Email is required");
    }
    if (empty($password)) {
        array_push($errors, "Password is required");
    }

    if (count($errors) == 0) {
        $password = md5($password);
        $query = "SELECT * FROM users WHERE email='$useremail' AND password='$password'";
        $results = mysqli_query($db, $query);
        
        if (mysqli_num_rows($results) == 1) {
            // 关键:从结果集中取出用户数据行
            $row = mysqli_fetch_assoc($results);
            $_SESSION['user_level'] = $row['user_level']; // 现在能正确获取user_level了
            $_SESSION['useremail'] = $useremail;
            $_SESSION['success'] = "You are now logged in";
            header('location: index.php');
            exit; // 加上exit防止跳转后执行后续代码
        } else {
            array_push($errors, "Wrong username/password combination");
        }
    }
}

2. 首页权限控制逻辑错误 + 缺少会话启动

你提到的index.html顶部的PHP代码有三个关键问题:

  • HTML文件默认不会解析PHP,你需要把文件名改成index.php
  • 逻辑完全写反了:你想要的是"user_level低于1时拒绝访问",但原代码是等于1就跳转到自身,否则跳登录页
  • 没有调用session_start(),导致无法读取$_SESSION变量

修复后的首页权限控制代码(放在index.php最顶部):

<?php
session_start(); // 必须先启动会话才能访问$_SESSION

// 检查用户是否登录,且user_level >=1
if (!isset($_SESSION['user_level']) || $_SESSION['user_level'] < 1) {
    header("Location: login.php");
    exit;
}
// 到这里说明权限符合要求,继续加载首页内容
?>

这样逻辑就正确了:如果用户未登录,或者级别低于1,就跳转到登录页;权限符合要求则正常显示首页。


额外建议(可选)

  • 不要使用md5加密密码,它已经不安全了,推荐使用password_hash()和password_verify()来处理密码
  • 注册新用户时可以默认设置user_level为0(等待审核状态),这样新用户登录后会被自动拦截,符合你注册时提示的"需要管理员审核"的逻辑

内容的提问来源于stack exchange,提问作者NeedtoKnow Basis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:03:32