您好,登錄后才能下訂單哦!
<?php
class Access{
/**
* 類(lèi)的唯一實(shí)例
*/
private static $instance;
/**
* 權(quán)限常量
*/
const SELECT = 0x1; //查詢(xún)
const CREATE = 0x2; //添加
const EDIT = 0x4; //修改
const DELETE = 0x8; //刪除
/**
* 角色
*/
private $annoy = ''; //匿名用戶(hù)
private $user = ''; //注冊(cè)用戶(hù)
private $admin = ''; //管理用戶(hù)
private $usertype = 'annoy';
private $hashtable = array(1=>'查詢(xún)',2=>'添加',4=>'修改',8=>'刪除');
/**
*
*/
public function __set($name,$value)
{
if ($name == 'usertype')
{
if ($value != '')
{
$this->usertype = $value;
}
}
}
/**
* 構(gòu)造函數(shù) 給角色賦予權(quán)限
*/
private function __construct()
{
$this->annoy = self::SELECT;
$this->user = self::SELECT | self::CREATE;
$this->admin = self::SELECT | self::CREATE | self::EDIT | self::DELETE;
}
/**
* 獲取類(lèi)的唯一實(shí)例
*/
public static function getInstance()
{
if (self::$instance === null){
self::$instance = new Access();
}
return self::$instance;
}
/**
* 檢查權(quán)限
*
* @param $usertype 角色
* @param $purview 權(quán)限
*/
public function check($purview)
{
if ($this->{$this->usertype} & $purview)
{
return true;
}
return false;
}
/**
* 給角色加權(quán)限
*/
public function addPur($purview)
{
$this->{$this->usertype} |= $purview;
}
/**
* 給角色減權(quán)限
*/
public function delPur($purview)
{
$this->{$this->usertype} ^= $purview;
}
/**
* 返回角色擁有的權(quán)限
*/
public function getPur()
{
$arr = array();
foreach ($this->hashtable as $k => $v)
{
if ($k & $this->{$this->usertype})
{
$arr[] = $v;
}
}
return $arr;
}
}
@session_start();
$_SESSION['role'] = 'user';
$pruview=Access::getInstance();
//獲取權(quán)限類(lèi)的實(shí)例
$pruview->usertype=$_SESSION['role'];
//設(shè)置角色
$pruview->usertype = $_SESSION['role'];
//獲取該角色擁有的權(quán)限
$arr = $pruview->getpur();
echo '該用戶(hù)的權(quán)限有:' . join(',', $arr) . "\n";
//判斷執(zhí)行的操作是否有權(quán)限
if (true === $pruview->check(Access::CREATE))
{
create(); //要執(zhí)行的操作
}
else
{
exit("<br><span style='color:red;'>您沒(méi)有權(quán)限!</span>");
}
//去掉用戶(hù)的添加權(quán)限
$pruview->delPur(Access::CREATE);
$arr = $pruview->getpur();
echo '<br>該用戶(hù)的權(quán)限有:' . join(',', $arr) . "\n";
//執(zhí)行添加操作
if (true === $pruview->check(Access::CREATE))
{
create(); //要執(zhí)行的操作
}
else
{
echo "<br><span style='color:red'>您沒(méi)有權(quán)限!</span><br>" . "\n";
}
//加上用戶(hù)的添加權(quán)限
$pruview->addPur(Access::EDIT);
$arr = $pruview->getpur();
echo '<br>該用戶(hù)的權(quán)限有:' . join(',', $arr) . "\n";
//執(zhí)行添加操作
if (true === $pruview->check(Access::EDIT))
{
edit(); //要執(zhí)行的操作
}
else
{
echo "<br><span style='color:red'>您沒(méi)有權(quán)限!</span>" . "\n";
}
//創(chuàng)建的方法
function create(){
echo "<br><span style='color:green;'>執(zhí)行創(chuàng)建操作</span><br>"; //要執(zhí)行的操作
}
//編輯的方法
function edit(){
echo "<br><span style='color:green;'>執(zhí)行編輯操作</span><br>"; //要執(zhí)行的操作
}
?>
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。