日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php 权限管理对节点控制,我对权限控制系统的看法_php

發布時間:2025/3/19 php 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 权限管理对节点控制,我对权限控制系统的看法_php 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

# 我曾經做了一個權限控制系統,由于需要修改,而我沒有找到有效的解決方法,

# 請大家給出出主意,給個大體思路,謝謝!要求如下:

# 1.每個父親節點下邊有多個孩子

# 2.每個孩子可能有一個父親,還可能有多個父親(多個父親的級別可能不同,也

http://www.gaodaima.com/45520.html我對權限控制系統的看法_php

#???就是有交叉現象)

# 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<=count($ar);$i++) {

if($ar[$i][id_u] == $value) {

echo "????[$value]
";

tree($ar,$i,$value,$ar[$i][level]);

}

}

}

?>

歡迎大家閱讀《我對權限控制系統的看法_php》,跪求各位點評,若覺得好的話請收藏本文,by 搞代碼

原創文章,轉載請注明: 轉載自搞代碼

微信 賞一包辣條吧~

支付寶 賞一聽可樂吧~

總結

以上是生活随笔為你收集整理的php 权限管理对节点控制,我对权限控制系统的看法_php的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。