本文目錄一覽:
php 權限控制實現方式有幾種
1.PHP5提供了3種訪問方式:
2.分別是一下幾種:
(1)public:可以被毫無限制地訪問,類外部的任何代碼都可以讀寫public屬性,在PHP5之前的版本中,所有的方法和屬性都是public。
(2)private:只在類的內部可見,類中的任何成員和類實例都可以訪問private成員,在所在類之外,不能改變或者讀取private屬性的值,也不能調用private的方法。子類也不能訪問父類的private成員。
(3)protected:能被同類和繼承出的類的方法訪問到。
如果沒有指明,默認均為public。
php後台多用戶權限設置及實現思路
adminconfig.php 這是後台系統中所有文件權限配置。
fun.php 這是一個功能函數
left.php 網站後台根據用戶登錄的ID來加載相對應的功能菜單
op.php 調用adminconfig.php 默認權限文件
opsava.php 保存用戶權限成一個php文件
好了我們先來看看 fun.php文件吧。
. 代碼如下:
?
function findsub($keys ,$userid=’abc’ ) //此函數重要就是為了調用用戶的權限信息
{
include(‘user/’.$userid.’.php’);
foreach($bb as $key=$submenu)
{
foreach($submenu as $subkey=$menuitem)
{
if( $subkey == $keys )
{
return 1;
}
}
}
}
//下面為生成用戶的php權限文件
//寫入
function cache_write($name, $var, $values) {
$cachefile = ‘op/’.$name.’.php’;
$cachetext = “?phprn”.’$’.$var.’=’.arrayeval($values).”rn?”;
if(!swritefile($cachefile, $cachetext))
{
exit(“File: $cachefile write error.”);
}
}
//數組轉換成字串
function arrayeval($array, $level = 0) {
$space = ”;
for($i = 0; $i = $level; $i++) {
$space .= “t”;
}
$evaluate = “Arrayn$space(n”;
$comma = $space;
foreach($array as $key = $val) {
$key = is_string($key) ? ”’.addcslashes($key, ”\’).”’ : $key;
$val = !is_array($val) (!preg_match(“/^-?d+$/”, $val) || strlen($val) 12) ? ”’.addcslashes($val, ”\’).”’ : $val;
if(is_array($val)) {
$evaluate .= “$comma$key = “.arrayeval($val, $level + 1);
} else {
$evaluate .= “$comma$key = $val”;
}
$comma = “,n$space”;
}
$evaluate .= “n$space)”;
return $evaluate;
}
//寫入文件
function swritefile($filename, $writetext, $openmod=’w’) {
if(@$fp = fopen($filename, $openmod)) {
flock($fp, 2);
fwrite($fp, $writetext);
fclose($fp);
return true;
} else {
exit(“File: $filename write error.”);
return false;
}
}
?
adminconfig.php 後台權限配置文件,以一個數組形式保存
. 代碼如下:
?
$menus = array(
‘news’ = array(
‘caption’=’資訊管理’,
‘icon’=’admin/icon_15.gif’,
‘sub’ = array(
‘newsaddtype’ = array(‘caption’ = ‘分類增加’, ‘url’ = ‘news/addtype.php’),
‘newstypemange’ = array(‘caption’ = ‘分類管理’, ‘url’ = ‘news/typemange.php’),
‘newsnewsend’ = array(‘caption’ = ‘發佈資訊’, ‘url’ = ‘news/newsend.php’),
‘newsnewmange’ = array(‘caption’ = ‘資訊管理’, ‘url’ = ‘news/newmange.php’),
‘newscomments’ = array(‘caption’ = ‘評論管理’, ‘url’ = ‘news/comments.php’),
),
),
‘ask’ = array(
‘caption’=’問卷調查’,
‘icon’=’admin/icon_15.gif’,
‘sub’ = array(
‘voteadmin_subject_add’ = array(‘caption’ = ‘添加投票主題’, ‘url’ = ‘vote/admin_subject_add.php’),
‘voteadmin_subject’ = array(‘caption’ = ‘管理投票主題’, ‘url’ = ‘vote/admin_subject.php’),
‘voteadmin_title_add’ = array(‘caption’ = ‘添加投票問題’, ‘url’ = ‘vote/admin_title_add.php’),
‘voteadmin_title’ = array(‘caption’ = ‘管理投票問題’, ‘url’ = ‘vote/admin_title.php’),
‘voteadmin_question_add’ = array(‘caption’ = ‘添加投票答案’, ‘url’ = ‘vote/admin_question_add.php’),
‘voteadmin_question’ = array(‘caption’ = ‘管理投票答案’, ‘url’ = ‘vote/admin_question.php’),
‘voteadmin_system’ = array(‘caption’ = ‘投票初始配置’, ‘url’ = ‘vote/admin_system.php’)
),
),
‘ads’ = array(
‘caption’=’廣告管理’,
‘icon’=’admin/icon_15.gif’,
‘sub’ = array(
‘ada’ = array(‘caption’ = ‘增加廣告’, ‘url’ = ‘ada.php’),
‘adm’ = array(‘caption’ = ‘廣告管理’, ‘url’ = ‘adm.php’),
‘flashadd’ = array(‘caption’ = ‘焦點圖廣告增加’, ‘url’ = ‘flashadd.php’),
‘flashad’ = array(‘caption’ = ‘焦點圖廣告管理’, ‘url’ = ‘flashad.php’)
),
),
‘mange’ = array(
‘caption’=’系統管理員’,
‘icon’=’admin/icon_15.gif’,
‘sub’ = array(
‘adminuser’ = array(‘caption’ = ‘管理員添加’, ‘url’ = ‘adminuser.php’),
‘modpass’ = array(‘caption’ = ‘密碼修改’, ‘url’ = ‘modpass.php’)
),
),
);
?
left.php文件很簡單就是根據用戶登錄後ID讀出權限
. 代碼如下:
?
$userid = $_SESSION[‘adminid’];
include(“op/admincofig.php”);
include(“op/ /”.$userid.”.php”);
foreach($bb as $key=$submenu)
{
echo “trtd bgcolor=”#D879A7″ style=”line-height:22px;text-align:center;color:#ffffff;” nr font color=”#EA6A8D” face=”Webdings”/fontb”.$menus[$key][‘caption’].”/bbr //td/tr nr tr td bgcolor=”F5E8F1″”;
foreach($submenu as $subkey=$menuitem)
{
$tmparr = explode(“|”,$menuitem);
echo “font color=”#EA6A8D” face=”Webdings”4/fonta href='”.$tmparr[1].”‘ target=”mainframe””.$tmparr[0].”/abr nr”;
}
echo “/td/tr nr “;
}
op.php這個文件就是要調用我們的adminconfig.php文件,然後利用fun.php文件中函數把提供過來的數據保存成數組如圖
點擊保存我們調用了opsava.php 文件,代碼如下
. 代碼如下:
?
include(“op/fun.php”);
if( $_POST )
{
$sarray = $_POST ;
cache_write($userid,’bb’,$sarray);//寫入緩存
echo “scriptalert(‘編輯保存成功!’);location=’op.php?userid=”.$userid.”‘;/script”;
}
?
保存成功後文件內容如
. 代碼如下:
?php
$bb=Array
(
‘member’ = Array
(
‘user_search’ = ‘會員升級管理|user_search.php’
),
‘membercy’ = Array
(
‘cyuser_search’ = ‘會員升級管理|cyuser_search.php’,
‘cyuser_search5’ = ‘交友會員|cyuser_search.php?grade=5’
),
‘userid’ = 7,
‘button’ = ‘保存編輯’
)
?
這樣的話我們的left只要加載 7.php文件就只會顯示這裡在的文件,這樣一個基本的後台權限就完成了。
php怎麼開啟com組件
先到PHP.INI中打開COM選項,com.allow_dcom = true 注意: PHP 5.4.5後,com/dotnet 模塊已經成了單獨的擴展,所以需要在PHP.ini中配置extension=php_com_dotnet.dll ,如果PHP VERSION5.4.5 則不需要。
在php網站中用戶權限
4個表
用戶表(用戶信息表)
權限表(設置可以訪問的頁面)
角色表(如果申請用戶的時候有多項選擇的時候添加,沒有則不需要)
用戶權限對應關係表(這個表是用於給每個用戶賦權)
如果用戶訪問頁面的時候,判斷是否存在訪問權限(查用戶權限對應關係表),如果有正常訪問,如果沒有頁面跳轉。不過跳到登錄頁面感覺不太合理,你判斷用戶是否有權限的時候,他應該是登錄狀態,如果再跳到登錄頁面感覺不合理。
判斷是否存在訪問權限可以封裝成公共類,每個頁面初始化的時候都調用這個公共類。可以通過用戶ID進行判斷。
同是普通用戶,那就加標識,判斷的時候再判斷一下標識,然後根據標識進行頁面跳轉。
以上,希望能幫到你。
php權限管理如何實現
可以使用acl控制實現,參考acl全集如下:
1、角色表
角色id – 用戶組id – 特殊權限id(其中特殊權限 用戶組所包含權限)
2、用戶組表
用戶組id – 用戶組信息
3、權限表
權限表id – 權限信息 – 與功能模塊的關係
4、用戶組-權限關聯表
用戶組id – 權限集合
5、特殊權限表
特殊權限id – 權限集合
注意:
1、設置權限的刪除、添加主要圍繞在 用戶組-權限關聯表、特殊權限表。
2、用戶的權限獲取則是驗證登陸的時候通過用戶組和特殊權限獲取權限集合。
3、展示的時候,根據2獲取的權限集合從權限表獲取所有功能模塊的導航菜單。
原創文章,作者:DEWN,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/143671.html