《PHP實(shí)戰(zhàn):PHP巧妙利用位運(yùn)算實(shí)現(xiàn)網(wǎng)站權(quán)限管理的方法》要點(diǎn):
本文介紹了PHP實(shí)戰(zhàn):PHP巧妙利用位運(yùn)算實(shí)現(xiàn)網(wǎng)站權(quán)限管理的方法,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
首先我們先定義4個(gè)常量來(lái)設(shè)定四種權(quán)限:PHP編程
=====================================
PHP編程
define(ADD,1);//增加數(shù)據(jù)庫(kù)記錄的權(quán)限
define(UPD,2);//修改數(shù)據(jù)庫(kù)記錄的權(quán)限
define(SEL,4);//查找數(shù)據(jù)庫(kù)記錄的權(quán)限
define(DEL,8);//刪除數(shù)據(jù)庫(kù)記錄的權(quán)限
PHP編程
=====================================
PHP編程
接下來(lái)假設(shè)有3個(gè)用戶(hù):
PHP編程
A用戶(hù)擁有ADD-UPD-SEL-DEL四個(gè)權(quán)限,用位或運(yùn)算計(jì)算A的權(quán)限總值
$a_all=ADD|UPD|SEL|DEL;//$all=15 可以注意到這個(gè)值和加法的結(jié)果是一樣的
B用戶(hù)擁有ADD-UPD-SEL三個(gè)權(quán)限,用位或運(yùn)算計(jì)算B的權(quán)限總值
$b_all=ADD|UPD|SEL;//$all=7 這個(gè)值和加法的結(jié)果又是一樣的
C用戶(hù)擁有ADD-UPD兩個(gè)權(quán)限,用位或運(yùn)算計(jì)算C的權(quán)限總值
$c_all=ADD|UPD;//$all=3 這個(gè)值和加法的結(jié)果還是一樣的PHP編程
=====================================
PHP編程
接下來(lái)我們用位與做運(yùn)算
$a_all&ADD 結(jié)果為真
$a_all&UPD 結(jié)果為真
$a_all&SEL 結(jié)果為真
$a_all&DEL 結(jié)果為真
PHP編程
=====================================
PHP編程
$b_all&ADD 結(jié)果為真
$b_all&UPD 結(jié)果為真
$b_all&SEL 結(jié)果為真
$b_all&DEL 結(jié)果為假
PHP編程
=====================================
PHP編程
$c_all&ADD 結(jié)果為真
$c_all&UPD 結(jié)果為真
$c_all&SEL 結(jié)果為假
$c_all&DEL 結(jié)果為假
PHP編程
=====================================
PHP編程
發(fā)現(xiàn)奧秘沒(méi)有?PHP編程
1、當(dāng)權(quán)限總值和沒(méi)有的那個(gè)權(quán)限做位與運(yùn)算,結(jié)果為假
PHP編程
2、權(quán)限的值都是2的次方
PHP編程
知道了這兩點(diǎn)權(quán)限的處理就變得簡(jiǎn)單了吧,只要在每次執(zhí)行涉及權(quán)限操作的時(shí)候把用戶(hù)當(dāng)前的權(quán)限總值和當(dāng)前操作需要的權(quán)限做位與運(yùn)算.如果結(jié)果為真執(zhí)行,為假做報(bào)錯(cuò)處理就行啦(當(dāng)然也不一定時(shí)報(bào)錯(cuò),你可以自己設(shè)計(jì)沒(méi)有權(quán)限時(shí)的程序).PHP編程
以上這篇PHP巧妙利用位運(yùn)算實(shí)現(xiàn)網(wǎng)站權(quán)限管理的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持維易PHP.PHP編程
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/1493.html