如何在PHP中仅让admin角色显示读、更新、删除按钮列
实现按用户角色控制表格操作按钮列的显示/隐藏
数据库中已为每个用户分配admin或user角色,需求是:仅admin角色用户能查看表格的Read、Update、Delete按钮列,user角色用户隐藏该列。
原PHP渲染代码
while($row = mysqli_fetch_array($result)){ echo "<tr>"; echo "<td>" . $row['id'] . "</td>"; echo "<td>" . $row['name'] . "</td>"; echo "<td>" . $row['address'] . "</td>"; echo "<td>" . $row['salary'] . "</td>"; echo "<td>"; echo '<a href="read.php?id='. $row['id'] .'" class="mr-3" title="View Record" data-toggle="tooltip"><span class="fa fa-eye"></span></a>'; echo '<a href="update.php?id='. $row['id'] .'" class="mr-3" title="Update Record" data-toggle="tooltip"><span class="fa fa-pencil"></span></a>'; echo '<a href="delete.php?id='. $row['id'] .'" title="Delete Record" data-toggle="tooltip"><span class="fa fa-trash"></span></a>'; echo "</td>"; echo "</tr>"; }
修改方案
假设当前登录用户的角色存储在$_SESSION['role']中(实际项目中可根据用户身份存储方式调整),通过条件判断控制操作列的输出:
// 确保session已启动(页面开头需调用) session_start(); while($row = mysqli_fetch_array($result)){ echo "<tr>"; echo "<td>" . $row['id'] . "</td>"; echo "<td>" . $row['name'] . "</td>"; echo "<td>" . $row['address'] . "</td>"; echo "<td>" . $row['salary'] . "</td>"; // 仅admin角色可见操作按钮列 if(isset($_SESSION['role']) && $_SESSION['role'] === 'admin'){ echo "<td>"; echo '<a href="read.php?id='. $row['id'] .'" class="mr-3" title="View Record" data-toggle="tooltip"><span class="fa fa-eye"></span></a>'; echo '<a href="update.php?id='. $row['id'] .'" class="mr-3" title="Update Record" data-toggle="tooltip"><span class="fa fa-pencil"></span></a>'; echo '<a href="delete.php?id='. $row['id'] .'" title="Delete Record" data-toggle="tooltip"><span class="fa fa-trash"></span></a>'; echo "</td>"; } echo "</tr>"; }
补充提示
- 务必在页面开头调用
session_start(),否则无法读取$_SESSION中的角色信息 - 如果角色存储在其他位置(如数据库查询结果、Cookie),替换条件判断中的角色来源即可
- 安全起见,要在
read.php、update.php、delete.php中也加入角色校验,防止用户直接通过URL绕过前端限制操作数据
内容的提问来源于stack exchange,提问作者bilatonab
相关产品推荐
相关产品推荐

