我在遇到權限分級的時候是用$_SESSION來控制的,值是1就允許查看,是0就不允許
創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設計、成都網(wǎng)站制作、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務從化,十載網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:028-86922220
可在登陸的時設置,也可以在查詢的時候設置
然后根據(jù)$_SESSION設置sql語句,大致如下
在登陸時根據(jù)filldname字段設置$_SESSION
if($row["filldname"]=="price"){
$_SESSION["quanxian"]=1;
}else{
$_SESSION["quanxian"]=0;
}
然后查詢時根據(jù)條件設置sql語句
if($_SESSION["quanxian"]==1){
$sql="select?po,pohh,wlbh,gysdm,dj,pddte?from?table?where?查詢條件";
}else{
$sql="select?po,pohh,wlbh,gysdm,pddte?from?table?where?查詢條件";
}
大致上就是這樣
期待更出色的答案
你說的這個問題就是thinkphp中的Rbac用戶權限問題,需要在數(shù)據(jù)庫中建立多張表來實現(xiàn)(這是最重要的一步)。先來說一下總的思路:
首先、用戶登陸時候驗證用戶存在之后把用戶的id存入session之中,之后在common類(這個類是繼承的action類,之后其他要用到權
限的類來繼承common類)中,使用_initialize()方法(繼承這個類的首先都要初始化這個方法,通過這個方法,可以達到用戶權限的判斷)。
之后、讀取所用的節(jié)點,并且根據(jù)用戶的id讀取出用戶所屬組(role),之后再根據(jù)用戶組取出權限表中的節(jié)點,最后用in_array()來判斷用戶是否有這個節(jié)點(欄目)如果有則顯示(讀取出來的節(jié)點),沒有則unset()方法
刪除。這樣實現(xiàn)了,比較簡單的方法是使用官方的類庫解決!
下面再補充幾個重要的步驟:
建表:到thinkphp中的ORG/Util/RBAC.class.php中之后里面有建數(shù)據(jù)庫表的代碼(文件開頭部分就有)。有四個表(節(jié)點表(node),用戶所屬組表(role),權限表(acces),用戶角色表(role_user))。創(chuàng)建四張表但是‘用戶表’要自己建(總共有五張表),最后添加數(shù)據(jù)就是了。
可能說的很空洞,最好的還是去官網(wǎng)看點視頻之后在看這個,或者相關的說明就懂了。說的不是很清楚,但是希望能給你指導一個方向吧。也為了能幫到更多初學者和鼓勵自己學習更多來幫助到更多的人,我也開通了百度空間(地址:hi.baidu.com/flyxiangshang)。也希望大家能多多支持。很多事情不是你做不做,最重要的是你能堅持多久。向上吧!
把菜單成一個數(shù)據(jù)庫表,指定一個鍵。如:
id:1, title:文章管理, icon: document, url: admin/article/index (更多字段根據(jù)需要設置)
id:2, title:產(chǎn)品管理, icon: cube, url: admin/product/index
id:3, title:系統(tǒng)設置, icon: setting, url: admin/setting/index
然后在管理員表中添加一個varchar(500) (長度根據(jù)你的菜單總數(shù)估計)或text字段
在管理員權限管理中列出所有菜單項,把id作為健值,選中的保存在管理員表的權限字段中
格式類似: 1,2,3
然后在輸出菜單的時候進行權限判斷
//將權限字段切割成數(shù)組
$perms = explode(',', $user['permission']);
foreach($menus as $menu){
if(in_array($perms, $menu['id'])){
echo 'a href="'. $menu['url'].'" '.$menu['title'].'/a';
}
}
然后在每個頁面根據(jù)頁面對應的權限id做一個判斷
//比如在文章頁面
if(!in_array($perms, 1)){
exit('沒有權限');
}
以上是大體思路,具體根據(jù)你的系統(tǒng)設計編寫代碼并對應地優(yōu)化。