在網站後台開發中,多用戶權限管理是不可或缺的核心功能。特別是當系統需要多位管理員協作時,必須將權限細分為編輯、鏈接管理、超級管理員等不同角色。本文將通過一個實際項目案例,詳細講解基於 PHP 實現的 RBAC(基於角色的存取控制)權限系統架構與核心代碼實現。
該權限系統採用模組化設計,核心文件分工明確:
採用多維陣列結構定義模組、圖標、子功能及對應 URL:
<?php
$menus = array(
'news' => array(
'caption' => '資訊管理',
'icon' => 'admin/icon_15.gif',
'sub' => array(
'newsaddtype' => array('caption' => '分類增加', 'url' => 'news/addtype.php'),
'newstypemange' => array('caption' => '分類管理', 'url' => 'news/typemange.php'),
// ...更多子功能
),
),
'ask' => array(/* 問卷調查模組 */),
'ads' => array(/* 廣告管理模組 */),
'mange' => array(/* 系統管理員模組 */),
);
?>
包含三大核心功能:
會話驗證後載入用戶權限文件,雙重遍歷輸出 HTML 表格結構的導航選單:
<?php
$userid = $_SESSION['adminid'];
include("op/adminconfig.php");
include("op/user/".$userid.".php");
foreach($bb as $key=>$submenu) {
// 輸出一級選單標題
// 遍歷子選單輸出操作連結
}
?>
管理員在介面勾選權限提交後,opsave.php 接收 POST 資料,調用 cache_write() 生成 user/{userid}.php 緩存文件。後續 left.php 直接載入該文件即可精準控制選單顯示,無需每次查詢資料庫,大幅提升效能。
<?php
$bb = Array(
'member' => Array('user_search' => '會員升級管理|user_search.php'),
'membercy' => Array(
'cyuser_search' => '會員升級管理|cyuser_search.php',
'cyuser_search5' => '交友會員|cyuser_search.php?grade=5'
),
'userid' => 7,
'button' => '保存編輯'
)
?>
這套基於文件緩存的權限系統結構清晰、邏輯閉環,適合中小型專案快速落地。核心思想是「配置集中化、權限文件化、載入動態化」,通過預生成用戶專屬權限文件,實現了零資料庫查詢的高效能選單渲染。理解其原理對於掌握 PHP 後台權限設計具有重要參考價值。