日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

我對權限控制系統的看法

我對權限控制系統的看法

更新時間:2022-05-06 文章作者:未知 信息來源:網絡 閱讀次數:

請大家給個思路! ---- 刁饞

# 我曾經做了一個權限控制系統,由于需要修改,而我沒有找到有效的解決方法,
# 請大家給出出主意,給個大體思路,謝謝!要求如下:
# 1.每個父親節點下邊有多個孩子
# 2.每個孩子可能有一個父親,還可能有多個父親(多個父親的級別可能不同,也
# 就是有交叉現象)
# 3.每個父親可能管理相同的孩子或者不同的孩子
# 4.每個父親登陸的時候,只能看到自己的孩子(如果管理的孩子不同,則登陸的
# 父親只能看到自己下邊的孩子,如果相同,那么他們看到的孩子都一樣)
# 5.每個父親可以添加自己的父親(孩子?)

由問題的提出,可得到如下樹狀結構。關鍵在于如何保存這個樹和怎樣檢索。

--0--000 (虛擬的根)
|
+-------------------+---------------+
--1--001 002 003
| | |
 +--+--+ +----+----+ +--+--+
--2-- 003 004 004006007 007 008
 | | |
 |+--+--+ +--+--+
--3-- 007003 008 001 002
|
 +----+----+
--4-- 005007006

其中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<$ar[$i][level]-1;$j++)
echo "";
echo "+--";
echo $ar[$i][id_u]."<br>";
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<br>";
for($i=1;$i<=count($ar);$i++) {
if($ar[$i][id_u] == $value) {
echo "[$value]<br>";
tree($ar,$i,$value,$ar[$i][level]);
}
}
}
?>

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

主站蜘蛛池模板: 伊人蕉久中文字幕无码专区 | 国产精品成人一区二区1 | 水蜜桃在线观看视频 | 亚洲精品美女久久久久网站 | 四虎在线观看视频 | 精品久久久久久久久免费影院 | jizz日| 国产成人亚洲综合a∨婷婷 国产成人亚洲综合欧美一部 | 国产三级精品美女三级 | 国产午夜亚洲精品久久999 | 久久久一区二区三区不卡 | 韩日视频在线观看 | 亚洲国产视频一区 | 欧美做爰xxxⅹ在线视频网址 | 中文字幕一区二区三区久久网站 | 国产福利不卡视频在免费播放 | 91在线老王精品免费播放 | 中文在线免费看视频 | 日韩国产欧美在线观看 | 亚洲在线a | 国产成人精品高清不卡在线 | 在线不卡日韩 | 国产毛片毛片精品天天看 | 亚洲国产成人私人影院 | 黄色网五月天 | 青青国产成人久久91网站站 | 久久精品国产亚洲a | 国产欧美日韩精品专区 | 日本福利视频网站 | 夜夜嗨影视 | 久久高清| 日本在线亚洲 | 日本道在线视频 | 久草视频中文在线 | 亚洲久久网站 | 日韩欧美一区二区三区不卡 | 男人和女人做爽爽视频在线观看 | 天天操天天摸天天碰 | 91人人视频国产香蕉 | 老司机国内精品久久久久 | 日韩精品一区二区三区免费观看 |