PHP控制面板页面权限控制问题:特定u_id用户访问限制失效
问题分析与修复方案
你遇到的问题出在条件判断的逻辑上,咱们来拆解一下错误原因:
你的原判断代码是这样的:
if (isset($_SESSION ['u_id']) != 'hans'){ header("Location: fout.php?message=paginaontoegankelijk"); die(); }
这里的isset($_SESSION['u_id'])返回的是布尔值(存在就是true,不存在就是false),你把布尔值和字符串'hans'做比较,这个逻辑完全不对——布尔值和字符串比较永远不会得到你想要的结果,所以其他用户自然能绕过这个限制。
修正后的代码
咱们把判断逻辑拆成两步,先确保用户已登录,再验证用户ID是否为'hans':
<?php if (!session_id()) { session_start(); } // 第一步:检查用户是否未登录,未登录直接跳转 if (!isset($_SESSION['u_id'])){ header("Location: fout.php?message=paginaontoegankelijk"); die(); } // 第二步:检查登录用户的u_id是否不是'hans',不符合就跳转 if ($_SESSION['u_id'] != 'hans'){ header("Location: fout.php?message=paginaontoegankelijk"); die(); } include_once 'header1.php'; include 'includes/dbh.inc.php'; ?>
逻辑说明
- 先保持session初始化的逻辑不变,确保会话正常启动。
- 先判断用户是否未登录(沿用你之前的正确逻辑),避免未登录用户绕过检查。
- 再判断已登录用户的
u_id是否不等于'hans',如果是就跳转到错误页面。
这样修改后,只有u_id为'hans'的用户才能访问该页面,其他登录用户和未登录用户都会被拦截。
内容的提问来源于stack exchange,提问作者J. Adam
相关产品推荐
相关产品推荐

