无数据库情况下如何在PHP中区分用户类型?
解决方案
1. 扩展用户数据结构
先修改你的用户存储数组,给每个用户添加type字段来区分身份,示例如下:
$users = [ "john" => [ "password" => "123", "type" => "user" // 普通用户 ], "admin" => [ "password" => "admin123", "type" => "admin" // 管理员 ] ];
2. 登录验证时存储用户类型到Session
登录逻辑里,验证用户名密码通过后,把用户类型存入Session(记得先开启Session):
session_start(); // 读取表单提交的用户名和密码 $username = $_POST['username'] ?? ''; $password = $_POST['password'] ?? ''; $users = [ "john" => ["password" => "123", "type" => "user"], "admin" => ["password" => "admin123", "type" => "admin"] ]; if (isset($users[$username]) && $users[$username]['password'] === $password) { // 验证通过,将用户信息存入Session $_SESSION['user'] = [ 'username' => $username, 'type' => $users[$username]['type'] ]; // 跳转至首页 header("Location: index.php"); exit; } else { echo "用户名或密码错误"; }
3. 在index.php中控制按钮状态
在index.php开头开启Session,根据Session中的用户类型判断按钮是否可用:
session_start(); // 未登录用户直接跳转登录页 if (!isset($_SESSION['user'])) { header("Location: login.php"); exit; } $userType = $_SESSION['user']['type']; ?> <!-- HTML按钮部分 --> <button <?php echo $userType !== 'admin' ? 'disabled' : ''; ?> > 管理员专属按钮 </button>
可选优化:直接隐藏按钮
如果不想让普通用户看到按钮,可改为条件渲染:
<?php if ($userType === 'admin'): ?> <button>管理员专属按钮</button> <?php endif; ?>
内容的提问来源于stack exchange,提问作者Mohamed El-Sharkawy
相关产品推荐
相关产品推荐

