如何将管理员(isAdmin)与普通员工(isAdmin2)重定向至同一页面
问题分析与解决方案
首先看你当前代码的两个关键问题:
1. 逻辑判断完全颠倒
你原代码的逻辑是:
if(!$user->isAdmin($odb)) elseif (!$user->isAdmin2($odb)){ header('home.php'); exit; }
这个逻辑的意思是:当用户不是管理员,并且也不是普通员工的时候,才会执行跳转。这和你想要的「管理员/普通员工都跳转到home.php」的需求完全相反。
2. HTTP跳转的Header格式错误
header('home.php') 是无效的跳转指令,浏览器不会识别。正确的跳转需要使用 Location: 前缀,格式应为 header('Location: home.php')。
修正后的代码
下面是符合你需求的代码:
// 如果用户是管理员 OR 普通员工,就重定向到home.php if ($user->isAdmin($odb) || $user->isAdmin2($odb)) { header('Location: home.php'); exit; // 确保后续代码不会执行 }
针对后续需求的补充(仅管理员访问特定页面)
你提到后续要让管理员单独访问特定页面,这里给你一个示例逻辑:
// 仅允许管理员访问的页面:如果用户不是管理员,直接跳转走 if (!$user->isAdmin($odb)) { // 可以跳转到首页,或者专门的无权限提示页面 header('Location: home.php'); exit; }
这样既满足当前的跳转需求,也为后续的权限控制留好了扩展空间。
内容的提问来源于stack exchange,提问作者Zac Ram
相关产品推荐
相关产品推荐

