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

如何在JavaScript中读取PHP Session值实现侧边栏菜单权限控制?

实现方案

第一步:将PHP端的用户权限同步到前端

你已经用PHP Session存储了登录用户信息,只需要在页面渲染时将「当前用户是否可访问Concerts」的标识输出为JS可读取的变量即可,示例代码如下(加到页面的script标签最顶部,或者head区域即可):

<?php session_start(); // 注意页面顶部要先启动session才能读取session内容 ?>
<script>
// 此处判断逻辑可根据你的业务调整,两种常用判断方式二选一即可
const canAccessConcerts = <?php 
// 方式1:按权限标识判断,适合你后台给用户分了权限组的场景
echo isset($_SESSION['user']['allow_concerts']) && $_SESSION['user']['allow_concerts'] ? 'true' : 'false';

// 方式2:按指定用户名限制,比如只允许用户名为jack、amy的用户访问
// $allowedUsers = ['jack', 'amy'];
// echo isset($_SESSION['user']['username']) && in_array($_SESSION['user']['username'], $allowedUsers) ? 'true' : 'false';
?>;
</script>

第二步:用JS根据权限控制菜单点击

修改你原来的Concerts菜单点击逻辑,无权限时禁用点击、添加禁用样式,还可以可选添加权限提示:

const concertsMenu = document.getElementById('concerts');
if (canAccessConcerts) {
  // 有权限时正常跳转
  concertsMenu.onclick = function () {
    location.href = "concerts.php";
  };
} else {
  // 无权限时添加禁用样式
  concertsMenu.style.opacity = '0.5';
  concertsMenu.style.cursor = 'not-allowed';
  // 阻止默认跳转行为,可选添加弹窗提示
  concertsMenu.onclick = function(e) {
    e.preventDefault();
    alert('您暂无权限访问该板块');
  }
}

重要补充

前端的权限限制仅能优化交互体验,无法完全阻止用户访问,必须在concerts.php页面最顶部添加后端权限校验,避免用户直接输入URL绕过前端限制:

<?php
session_start();
// 权限校验逻辑和前端保持一致即可
$allowedUsers = ['jack', 'amy'];
if (!isset($_SESSION['user']['username']) || !in_array($_SESSION['user']['username'], $allowedUsers)) {
  // 无权限直接跳转回首页或者返回403错误
  header('Location: index.php');
  exit();
}
// 后续是concerts.php的正常业务代码
?>

内容的提问来源于stack exchange,提问作者Γιάννης Γιαννάκος

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:15:01