亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

基于原生PHP交叉會員權限控制

2020-03-22 18:23:56
字體:
來源:轉載
供稿:網友
  • 對于一個網站的后臺管理系統,單一的超級管理員權限往往不能滿足我們的需求,尤其是對于大型網站而言,這種單一的權限會引發許許多多的問題出現。

    比如:一個網站編輯,平時他只是負責公司網站的公告更新,但如果網站后臺沒有嚴格的權限限制,他是不是就可以操作到客戶的一些信息,這是存在很大隱患的。

    如果學過Thinkhtml' target='_blank'>PHP框架的朋友一定知道有個東西叫RBAC,今天咱不說那個,來說說在原生PHP語言中,怎么實現交叉權限控制。

    好了,話不多說,老樣子,直接說原理,上代碼。

    對于權限的交叉控制可以有很多種方法實現,這里只是提供一種思路:(我采用的是二進制數的方法)

    一、這里先提下按位與和按位或的運算方法:

    1、按位與運算符(&)

    參加運算的兩個數據,按二進制位進行“與”運算。

    運算規則:0&0=0;0&1=0;1&0=0;1&1=1;

    即:兩位同時為“1”,結果才為“1”,否則為0

    例如:3&5即 0000 0011& 0000 0101 = 0000 0001因此,3&5的值得1。

    另,負數按補碼形式參加按位與運算。

    2、按位或運算符(|)

    參加運算的兩個對象,按二進制位進行“或”運算。

    運算規則:0|0=0; 0|1=1;1|0=1;1|1=1;

    即 :參加運算的兩個對象只要有一個為1,其值為1。

    例如:3|5 即 0000 0011| 0000 0101 = 0000 0111因此,3|5的值得7?!?/p>

    另,負數按補碼形式參加按位或運算。

    了解了按位與和按位或的運算,我們來看下面這個例子:

     1 <?php 2     define('ADD',1);//二進制1 3     define('DELETE',2);//二進制10 4     define('UPDATE',4);//二進制100 5     define('SELECT',8);//二進制1000 6  7     //有權限為1,沒有權限為0 8     $admin=ADD|DELETE|UPDATE|SELECT;//1111 9     $editor=ADD|UPDATE|SELECT;//110110     $user=SELECT;//100011 ?>

    我把增刪改查分別做成了4個權限并定為常量

    1的二進制數是1,2的二進制數是10,4的二進制數是100,8的二進制數是1000,這里剛好成一個規律

    可能有些朋友會問上面權限變量admin,editor,user所對應的1111,1101,1000是怎么來的?

    PHP里有一個十進制數轉二進制數的函數叫decbin()

    下面是對應的函數解釋:

    decbin(PHP 3, PHP 4, PHP 5)decbin -- 十進制轉換為二進制說明string decbin ( int number )

    返回一字符串,包含有給定 number 參數的二進制表示。所能轉換的最大數值為十進制的 4294967295,其結果為 32 個 1 的字符串。 例子 1. decbin() 范例<?phpecho decbin(12) . "/n";echo decbin(26);?> 上例將輸出:110011010參見 bindec(),decoct(),dechex() 和 base_convert()。

    我們來測試輸出看看吧:

     1 <?php 2      3      4     define('ADD',1);//二進制1 5     define('DELETE',2);//二進制10 6     define('UPDATE',4);//二進制100 7     define('SELECT',8);//二進制1000 8  9     //有權限為1,沒有權限為010     $admin=ADD|DELETE|UPDATE|SELECT;//111111     $editor=ADD|UPDATE|SELECT;//110112     $user=SELECT;//100013 14     echo decbin($admin)."<br/>";15     echo decbin($editor)."<br/>";16     echo decbin($user)."<br/>";17 18 19 ?>

    輸出結果:

    那么我們就可以運用這個運算來判斷權限了,1代表有權限,0代表無權限

    比如:

    admin(超級管理員)擁有的權限是增刪改查也就是1111——>0000 1111

    editor(網站編輯)擁有的權限是增,改,查也就是1101——>0000 1101

    user(普通用戶)只擁有瀏覽、查詢的權限也就是1000——>0000 1000

    那么我們只穴ky"http://www.it165.net/qq/" target="_blank" class="keylink">qq21Mv8w8e9+NDQsLTOu9Pr1MvL477Nv8nS1MXQts/Kx7fxvt+xuMioz97ByzwvcD4KPHA+wP3I56O6PC9wPgo8cD7N+NW+seC8rcioz94gMDAwMCAxMTAxIA==" 0000 0010(刪除權限十進制為2轉二進制為10)  結果:0000 0000 也就是沒有具備權限

    再來試試

    普通用戶權限 0000 1000 |0000 0001(添加權限十進制為1二進制為1)  結果:0000 0000 也一樣不具備權限

    超級管理員權限0000 1111 |0000 1101(網站編輯的權限)  結果:0000 1111 也就是具備了網站編輯的權限

    好了看具體實例吧

    我建了一個數據庫,里面有2張表

    一張是user用戶表:

    gid代表權限表的組id

    一張是權限表:

    flag代表增刪改查的權限,可根據自己需穴ky"http://www.it165.net/qq/" target="_blank" class="keylink">qq2qNLlPC9wPgo8cD48aW1nIHNyYz0="http://www.it165.net/uploadfile/files/2014/0807/2014080720012574.jpg" alt="" />

    基本配置頁面:config.php

     1 <?php 2      3     define('HOST','localhost'); 4     define('DBNAME','member'); 5     define('USER', 'root'); 6     define('PASS', ''); 7  8  9     $link=@mysql_connect(HOST,USER,PASS) or die('數據庫連接失敗');10 11     mysql_select_db(DBNAME,$link);12 13     define('ADD',1);//二進制114     define('DELETE',2);//二進制1015     define('UPDATE',4);//二進制10016     define('SELECT',8);//二進制100017 18     //有權限為1,沒有權限為019     $admin=ADD|DELETE|UPDATE|SELECT;//111120     $editor=ADD|UPDATE|SELECT;//110121     $user=SELECT;//100022 ?>

    登陸首頁:index.html

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 3 <head> 4     <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 5     <title>Document</title> 6 </head> 7 <body> 8     <form action="action.php" method="post"> 9         賬號:<input type="text" name="username" />10         密碼:<input type="password" name="password" />11         <input type="submit" name="submit" value="登陸">    12     </form>    13 </body>14 </html>

    提交頁面:action.php

     1 <?php 2      3     require_once('config.php'); 4     $username=$_POST['username']; 5     $password=$_POST['password']; 6  7  8     $sql="select * from user as a,role as b where a.gid=b.gid  9     and a.username='$username' and password='$password'";10 11     $result=mysql_query($sql);12     if($data=mysql_fetch_array($result)){13         //賬號驗證通過,判斷對應權限14         //此處判斷的是 是否具備刪除權限15         if($data['flag']&DELETE){16             echo "你有刪除權限";17         }else{18             echo "你沒有刪除權限";19         }20 21     }else{22         echo "錯誤賬號密碼";23     }24     25 26 ?>

    效果圖如下:

    輕松搞定~

    這里只是個簡單的小DEMO演示,希望能起到拋磚引玉的作用,至于具體項目還需具體分析,權限控制畢竟是個很復雜的功能。

    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
    97在线看福利| 一本一道久久a久久精品逆3p| 亚洲精品国产精品国自产观看浪潮| 国产精品91在线| 欧美激情亚洲综合一区| 欧美精品中文字幕一区| 日韩美女在线播放| 欧美午夜视频在线观看| 亚洲成人黄色网| 亚洲va欧美va国产综合剧情| 亚洲午夜精品久久久久久久久久久久| 日本一区二区三区四区视频| 日本高清不卡的在线| 久久精品一区中文字幕| 在线视频欧美性高潮| 亚洲人成电影网站色xx| 国产亚洲一级高清| 国产精品九九久久久久久久| 亚洲国内精品视频| 美女福利精品视频| 97久久精品在线| 国产一区二区丝袜高跟鞋图片| 精品久久久久久中文字幕| 蜜臀久久99精品久久久久久宅男| 国产aⅴ夜夜欢一区二区三区| 国产精品直播网红| 国产一区二区三区视频在线观看| 日韩精品在线第一页| 亚洲天堂av图片| 综合国产在线视频| 亚洲欧美日韩高清| 国模视频一区二区| 久久久久久久网站| 2021国产精品视频| 欧美精品九九久久| 国产日韩精品一区二区| 国产精品欧美激情在线播放| 国产亚洲美女精品久久久| 欧美成人黑人xx视频免费观看| 91亚洲国产成人精品性色| 韩国v欧美v日本v亚洲| 欧美激情图片区| 久久精品国产清自在天天线| 亚洲自拍偷拍色图| 亚洲аv电影天堂网| 久久久噜噜噜久久中文字免| 亚洲第一国产精品| 国产综合在线看| 欧美老肥婆性猛交视频| 国产视频在线观看一区二区| 亚洲国产成人久久综合| 欧美日韩在线第一页| 在线成人一区二区| 992tv成人免费视频| 欧美精品在线免费观看| 国产精品美女av| 国产精品久久久久久久久借妻| 宅男66日本亚洲欧美视频| 亚洲xxx大片| 精品免费在线视频| 日韩av一区在线观看| 欧美日韩日本国产| 国产亚洲精品日韩| 911国产网站尤物在线观看| 久久91亚洲精品中文字幕奶水| 亚洲女人天堂网| 色偷偷av亚洲男人的天堂| 日韩成人中文电影| 日韩最新中文字幕电影免费看| 日韩av网站导航| 欧美最猛性xxxxx(亚洲精品)| 久久99热精品这里久久精品| 亚洲欧美福利视频| 日韩少妇与小伙激情| 亚洲电影中文字幕| 国产精品亚洲美女av网站| 亚洲自拍偷拍福利| 欧美人在线视频| 日韩成人在线网站| 91精品国产综合久久香蕉最新版| 久久久久久久国产精品视频| 色老头一区二区三区| 久久久国产视频| 国产v综合ⅴ日韩v欧美大片| 欧美精品在线观看| 欧美福利视频网站| 欧美性猛交xxxx黑人猛交| 色综合久久中文字幕综合网小说| 国产午夜精品一区二区三区| www.日韩欧美| 一区二区在线视频| 亚洲一区二区三| www.久久久久久.com| 精品福利一区二区| 欧美一级电影在线| 日韩av影视综合网| 久久人人爽人人爽人人片亚洲| 亚洲欧美日韩中文视频| 欧美丰满老妇厨房牲生活| 91精品国产综合久久香蕉| 成人国产亚洲精品a区天堂华泰| 亚洲最大中文字幕| 中文字幕亚洲一区在线观看| 欧美视频在线视频| 91在线观看免费高清完整版在线观看| 亚洲国产中文字幕在线观看| 久久免费视频这里只有精品| 中文字幕久久久av一区| 大荫蒂欧美视频另类xxxx| 少妇高潮 亚洲精品| 亚洲国产成人一区| 久热爱精品视频线路一| www.久久草.com| 久久久久久久久久久人体| 伊是香蕉大人久久| 中文字幕精品www乱入免费视频| 欧美日韩色婷婷| www亚洲精品| 日本国产精品视频| 亚洲国产天堂网精品网站| 91极品视频在线| 欧美在线视频免费观看| 亚洲国产精品一区二区久| 国产日本欧美一区二区三区| 日韩av片免费在线观看| 色av中文字幕一区| 大荫蒂欧美视频另类xxxx| 国产日韩在线观看av| 国产午夜精品视频免费不卡69堂| 国产精品激情自拍| 正在播放欧美视频| 欧美成人自拍视频| 亚洲女同性videos| 亚洲一级黄色片| 午夜精品一区二区三区在线视频| 色阁综合伊人av| 欧美一级淫片aaaaaaa视频| 日韩成人在线电影网| 亚洲欧美激情另类校园| 久久亚洲一区二区三区四区五区高| 国产精品久久久精品| 中文字幕在线观看亚洲| 欧美日韩国产综合视频在线观看中文| 亚洲区中文字幕| 成人444kkkk在线观看| 国产一区二区三区在线免费观看| 中文字幕亚洲一区在线观看| 日韩天堂在线视频| 欧美黑人巨大精品一区二区| 国产精品露脸自拍| 在线成人激情视频| 性色av一区二区三区在线观看| 亚洲成人av资源网| 日韩激情在线视频| 人九九综合九九宗合| 日韩欧美成人区| 色偷偷888欧美精品久久久| 国产成人av网址| 国产在线视频91| 欧美国产亚洲精品久久久8v| 日韩视频免费在线| 久久99精品久久久久久青青91| 亚州精品天堂中文字幕| 精品二区三区线观看|