我对权限控制系统的看法_PHP
请大家给个思路! ---- 刁馋
# 我曾经做了一个权限控制系统,由于需要修改,而我没有找到有效的解决方法,
# 请大家给出出主意,给个大体思路,谢谢!要求如下:
# 1.每个父亲节点下边有多个孩子
# 2.每个孩子可能有一个父亲,还可能有多个父亲(多个父亲的级别可能不同,也
# 就是有交叉现象)
# 3.每个父亲可能管理相同的孩子或者不同的孩子
# 4.每个父亲登陆的时候,只能看到自己的孩子(如果管理的孩子不同,则登陆的
# 父亲只能看到自己下边的孩子,如果相同,那么他们看到的孩子都一样)
# 5.每个父亲可以添加自己的父亲(孩子?)
由问题的提出,可得到如下树状结构。关键在于如何保存这个树和怎样检索。
--0-- 000 (虚拟的根)
|
+-------------------+---------------+
--1-- 001 002 003
| | |
+--+--+ +----+----+ +--+--+
--2-- 003 004 004 006 007 007 008
| | |
| +--+--+ +--+--+
--3-- 007 003 008 001 002
|
+----+----+
--4-- 005 007 006
其中004登录后,应看到(1,001)-[2,004]-(3,007)和(1,002)-[2,004]-(3,003)-(4,007)等
而不应看到(1,003)-(2,007)。
即所有用户在登录后向下搜索孩子,可能在多个分支上进行。
设有两张表
表一保存所有成员的信息(以下简称U),主键id_u
表二为成员间的关系(以下简称K),主键id
U
id_u | name | ...
-------+------+----
001 | |
002 | |
003 | |
004 | |
005 | |
006 | |
... | |
K
id | id_u | level | next | previons | right
-----+------+-------+------+----------+-------
1 | 001 | 1 | 2 | | 5
2 | 003 | 2 | | 1 | 3
3 | 004 | 2 | 4 | 1 |
4 | 007 | 3 | | 3 |
5 | 002 | 1 | 6 | | 14
6 | 004 | 2 | 7 | 5 | 12
7 | 003 | 3 | 9 | 6 | 8
8 | 008 | 3 | | 6 |
9 | 005 | 4 | | 7 | 10
10 | 006 | 4 | | 7 | 11
11 | 007 | 4 | | 7 |
12 | 006 | 2 | | 5 | 13
13 | 007 | 2 | | 5 |
14 | 003 | 1 | 15 | |
15 | 007 | 2 | 16 | 14 | 18
16 | 001 | 3 | | 15 | 17
17 | 002 | 3 | | 15 |
18 | 008 | 2 | | 14 |
其中:level 保存级别, next 保存下级的id, previons 保存上级的id, right 保存右邻的id
关于具体的数据组织视算法而定。
数的遍历算法,是很经典的了!
建议用数组计算,即一次性读入到数组,效率可能高一点
测试例,previons项未用
$ar = array(
0,
array(id=> 1,id_u=>"001", level=>1, next=> 2, previons=> 0, right=> 5),
array(id=> 2,id_u=>"003", level=>2, next=> 0, previons=> 1, right=> 3),
array(id=> 3,id_u=>"004", level=>2, next=> 4, previons=> 1, right=> 0),
array(id=> 4,id_u=>"007", level=>3, next=> 0, previons=> 3, right=> 0),
array(id=> 5,id_u=>"002", level=>1, next=> 6, previons=> 0, right=>14),
array(id=> 6,id_u=>"004", level=>2, next=> 7, previons=> 5, right=>12),
array(id=> 7,id_u=>"003", level=>3, next=> 9, previons=> 6, right=> 8),
array(id=> 8,id_u=>"008", level=>3, next=> 0, previons=> 6, right=> 0),
array(id=> 9,id_u=>"005", level=>4, next=> 0, previons=> 7, right=>10),
array(id=>10,id_u=>"006", level=>4, next=> 0, previons=> 7, right=>11),
array(id=>11,id_u=>"007", level=>4, next=> 0, previons=> 7, right=> 0),
array(id=>12,id_u=>"006", level=>2, next=> 0, previons=> 5, right=>13),
array(id=>13,id_u=>"007", level=>2, next=> 0, previons=> 5, right=> 0),
array(id=>14,id_u=>"003", level=>1, next=>15, previons=> 0, right=> 0),
array(id=>15,id_u=>"007", level=>2, next=>16, previons=>14, right=>18),
array(id=>16,id_u=>"001", level=>3, next=> 0, previons=>15, right=>17),
array(id=>17,id_u=>"002", level=>3, next=> 0, previons=>15, right=> 0),
array(id=>18,id_u=>"008", level=>2, next=> 0, previons=>14, right=> 0)
);
//print_r($ar);
function tree($ar,$i,$key,$level) {
if($ar[$i][id_u] == $key || $ar[$i][level] > $level) {
for($j=0;$j
echo " ";
echo "+--";
echo $ar[$i][id_u]."
";
if($ar[$i][next] > 0)
tree($ar,$ar[$i][next],$key,$level);
}
if($ar[$i][right] > 0)
tree($ar,$ar[$i][right],$key,$level);
}
$keys = array("001","002","003","004","005","006","007","008");
while(list($key,$value) = each($keys)) {
echo "===> $value
";
for($i=1;$i
if($ar[$i][id_u] == $value) {
echo " [$value]
";
tree($ar,$i,$value,$ar[$i][level]);
}
}
}
?>

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

可以讓使用者對系統進行更深入的操作和定制,root權限是一種管理員權限,在Android系統中。取得root權限通常需要一系列繁瑣的步驟,對於一般使用者來說可能不太友善、然而。透過一鍵開啟root權限,本文將介紹一種簡單而有效的方法,幫助使用者輕鬆取得系統權限。了解root權限的重要性及風險擁有更大的自由度,root權限可以讓使用者完全控製手機系統。加強安全控制等,客製化主題、使用者可刪除預先安裝應用程式。例如誤刪系統檔案導致系統崩潰,過度使用root權限也有風險、不慎安裝惡意軟體等,然而。在使用root權限前

由於權限,並不總是可以存取某些資料夾,在今天的指南中,我們將向您展示如何在Windows11上的舊硬碟上存取使用者資料夾。此過程很簡單,但可能需要一段時間,有時甚至數小時,具體取決於驅動器的大小,因此請格外耐心並嚴格按照本指南中的說明進行操作。為什麼我無法存取舊硬碟上的使用者資料夾?使用者資料夾的所有權屬於另一台電腦,因此您無法對其進行修改。除了所有權之外,您對該資料夾沒有任何權限。如何開啟舊硬碟上的使用者檔案? 1.取得資料夾的所有權並更改權限找到舊的使用者目錄,右鍵單擊它,然後選擇屬性。導航至“安

在iOS17中,Apple可以更好地控制應用程式可以看到的照片內容。繼續閱讀,了解如何按應用程式管理應用程式存取權限。在iOS中,Apple的應用程式內照片選取器可讓您與應用程式分享特定照片,而照片圖庫的其餘部分則保持私密。應用程式必須要求存取您的整個照片圖庫,您可以選擇授予應用程式以下存取權限:受限存取–應用程式只能看到您可以選擇的圖像,您可以隨時在應用程式中或透過前往「設定」> ;“隱私和安全性”>“照片”來查看所選圖像。完全存取權限–App可以查看照片

linux刪除檔案需要所在資料夾的所有權限,分別是讀取、寫入、執行。因為定位這個檔案過程就需要進入資料夾,即使使用類似rm /xxx/fle的方式,同樣系統內部也會進入資料夾,所以要對資料夾有執行權限,然後讀取資料夾內容需要讀取的權限,最後是刪除文件,由於文件是上級資料夾的一部分所以需要對資料夾有寫的權限。

qq空間如何設定權限存取?在QQ空間中是可以設定權限訪問,但是多數的小夥伴不知道QQ空間如何設定權限存取的功能,接下來就是小編為使用者帶來的qq空間設定權限存取方法圖文教程,有興趣的用戶快來一起看看吧! QQ使用教學qq空間如何設定權限存取1、先開啟QQ應用,主頁點選左上角【頭像】點選;2、然後左側展開個人資訊專區,點選左下角【設定】功能;3、進入設定頁面滑動,找到其中的【隱私】選項;4、接下來在隱私的介面,其中的【權限設定】服務;5、之後挑戰到最新頁面選擇【空間動態】;6、再次在QQ空間設置

PHP是一種廣泛應用的程式語言,被廣泛用於創建和開發各種Web應用程式。在許多網路應用程式中,角色權限管理系統是一個重要的功能,它可以確保不同使用者擁有適當的存取權限。本文將介紹如何使用PHP來實作一個簡單而實用的角色權限管理系統。角色權限管理系統的基本概念是將使用者分為不同的角色,並為每個角色分配相應的權限。這樣,使用者只能執行他們有權限執行的操作,從而確保系統的

CentOS搭建web伺服器前需注意的權限與存取控制策略在建置web伺服器的過程中,權限與存取控制策略是非常重要的一環。正確設定權限和存取控制策略可以保護伺服器的安全性,防止非授權使用者存取敏感資料或對伺服器進行不當操作。本文將介紹在CentOS系統下建置web伺服器時需要注意的權限與存取控制策略,並提供對應的程式碼範例。使用者與群組的管理首先,我們需要建立一個專

Discuz論壇權限管理:閱讀權限設定指南在Discuz論壇管理中,權限設定是至關重要的一環。其中,閱讀權限的設定尤其重要,它決定了不同使用者在論壇中能夠看到的內容範圍。本文將詳細介紹Discuz論壇的閱讀權限設置,以及如何針對不同的需求進行靈活的配置。一、閱讀權限基礎概念在Discuz論壇中,閱讀權限主要有以下幾個概念需要了解:預設閱讀權限:新使用者註冊後預設
