喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

[北京]代朋友公司招聘PHP高级程序员多名

上一主题 下一主题
     
标题: [原创] 无聊写的权限控制类  
 
niohe (网缘伟伟)
论坛元老
Rank: 8Rank: 8
PHPOX


UID 73469
精华 0
积分 3120
帖子 552
金钱 3120 喜悦币
威望 0
人脉 0
阅读权限 90
注册 2006-5-16
来自 吉林延边
状态 离线
无聊写的权限控制类

第1次写2进制的东西,写的不好,大家帮忙扩展和改进!
类文件:

<?php
/**
 * Displays : 权限控制类
 * Author   : phpox
 * Date     : Fri Nov 30 13:13:48 CST 2007
 */
 
class include_purview 
{
    
/**
     * 类的唯一实例
     */
    
private static $instance;
    
    
/**
     * 权限常量
     */
    
const SELECT 0x1//查询
    
const CREATE 0x2//添加
    
const EDIT   0x4//修改
    
const DELETE 0x8//删除
    
    /**
     * 角色
     */
    
private $annoy ''//匿名用户
    
private $user  ''//注册用户
    
private $admin ''//管理用户
    
private $usertype 'annoy';
    private 
$hashtable = array(1=>'查询',2=>'添加',4=>'修改',8=>'删除');
    
    
/**
     * 
     */
    
public function __set($name,$value)
    {
        if (
$name == 'usertype')
        {
            if (
$value != '')
            {
                
$this->usertype $value;
            }
        }
    }
    
    
/**
     * 构造函数 给角色赋予权限
     */
    
private function __construct()
    {
        
$this->annoy self::SELECT;
        
$this->user self::SELECT self::CREATE;
        
$this->admin self::SELECT self::CREATE self::EDIT self::DELETE;
    }
    
    
/**
     * 获取类的唯一实例
     */
    
public static function getInstance()
    {
        if (
self::$instance === null){
            
self::$instance = new include_purview();
        }
        return 
self::$instance;
    }
    
    
/**
     * 检查权限
     *
     * @param $usertype 角色
     * @param $purview 权限
     */
    
public function check($purview)
    {
        if (
$this->{$this->usertype} & $purview)
        {
            return 
true;
        }
        return 
false;
    }
    
    
/**
     * 给角色加权限
     */
    
public function addPur($purview)
    {
        
$this->{$this->usertype} |= $purview;
    }
    
    
/**
     * 给角色减权限
     */
    
public function delPur($purview)
    {
        
$this->{$this->usertype} ^= $purview;
    }
    
    
/**
     * 返回角色拥有的权限
     */
    
public function getPur()
    {
        
$arr = array();
        foreach (
$this->hashtable as $k => $v)
        {
            if (
$k $this->{$this->usertype})
            {
                
$arr[] = $v;
            }
        }
        return 
$arr;
    }
}
?>
示例:

<?php
/**
 * 示例
 */
//在session中读用户组
@session_start();
$_SESSION['role'] = 'user';

//获取权限类的实例
$pruview include_purview::getInstance();
//设置角色
$pruview->usertype $_SESSION['role'];
//获取该角色拥有的权限
$arr $pruview->getpur();
echo 
'该用户的权限有:'.join(',',$arr)."n";
//判断执行的操作是否有权限
if (true === $pruview->check(include_purview::CREATE ))
{
    
create(); //要执行的操作
}
else 
{
    exit(
'您没有权限!');
}
//去掉用户的添加权限
$pruview->delPur(include_purview::CREATE );
$arr $pruview->getpur();
echo 
'该用户的权限有:'.join(',',$arr)."n";
//执行添加操作
if (true === $pruview->check(include_purview::CREATE ))
{
    
create(); //要执行的操作
}
else 
{
    echo 
'您没有权限!'."n";
}
//加上用户的添加权限
$pruview->addPur(include_purview::CREATE );
$arr $pruview->getpur();
echo 
'该用户的权限有:'.join(',',$arr)."n";
//执行添加操作
if (true === $pruview->check(include_purview::CREATE ))
{
    
create(); //要执行的操作
}
else 
{
    exit(
'您没有权限!');
}

//具体的操作
function create()
{
    echo 
'执行了添加操作'."n";
}
?>
输出结果:
该用户的权限有:查询,添加
执行了添加操作
该用户的权限有:查询
您没有权限!
该用户的权限有:查询,添加
执行了添加操作




QQ:86958842,承接各种小型网站项目.我的BLOG http://www.aitao8.cn/
2007-11-30 01:15 PM#1
查看资料  访问主页  发短消息  QQ  顶部
 
psdshow
金牌会员
Rank: 6Rank: 6
论坛元老



UID 30908
精华 0
积分 1758
帖子 1364
金钱 1758 喜悦币
威望 0
人脉 0
阅读权限 70
注册 2004-9-6
来自 永州-廣州
状态 离线
[推荐阅读] 请问村里股市的算法,涨跃是根据什么来的。
收下了



以下AD由PHPX赞助:
广州梦莎五金饰品厂 东莞恒隆五金饰品厂 承接php私活
2007-11-30 05:23 PM#2
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
scf2
注册会员
Rank: 2
中级会员



UID 19294
精华 0
积分 195
帖子 210
金钱 195 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2003-4-1
来自 重庆人在深圳
状态 离线
[推荐阅读] 请教一个联表查询的问题
vb bn



傲客网,找你想要的......
http://oklrc.com
2007-11-30 11:31 PM#3
查看资料  访问主页  发短消息  QQ  顶部
 
剑枫 (雪花)
论坛元老
Rank: 8Rank: 8
欧玛嘎


UID 26144
精华 1
积分 4935
帖子 1701
金钱 4925 喜悦币
威望 10
人脉 0
阅读权限 90
注册 2004-2-14
来自 山东郓城
状态 离线
[推荐阅读] PHP 框架: CodeIgniter 分页教程
不错, 为什么要二进制



在场外支持奥运.....
2007-12-1 02:47 PM#4
查看资料  访问主页  发短消息  QQ  顶部
 
songlv (超级版主)
金牌会员
Rank: 6Rank: 6


UID 73828
精华 0
积分 2058
帖子 674
金钱 2054 喜悦币
威望 0
人脉 4
阅读权限 70
注册 2006-5-22
状态 离线
[推荐阅读] 两星期不来咋都炒股了,晕...
8421BCD编码

我以前也打算用过,但是这样缺点很大,就是权限位数不能超过整数的位数,所以改成 字符串型比较好




倾城倾国  
2007-12-4 12:56 PM#5
查看资料  访问主页  Blog  发短消息  顶部
 
niohe (网缘伟伟)
论坛元老
Rank: 8Rank: 8
PHPOX


UID 73469
精华 0
积分 3120
帖子 552
金钱 3120 喜悦币
威望 0
人脉 0
阅读权限 90
注册 2006-5-16
来自 吉林延边
状态 离线
[推荐阅读] 大家推荐一个比较好的建站引擎吧。
初次学着写,有很多缺点,目前项目用不到,过天做的项目会用到,到时跟着需要再改进!



QQ:86958842,承接各种小型网站项目.我的BLOG http://www.aitao8.cn/
2007-12-4 08:26 PM#6
查看资料  访问主页  发短消息  QQ  顶部
 
changxiaob
注册会员
Rank: 2


UID 92575
精华 0
积分 69
帖子 127
金钱 69 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2007-5-6
状态 离线
[推荐阅读] call_user_func_array第一个参数是数组
收藏一下~~有空在看
2007-12-13 02:41 PM#7
查看资料  Blog  发短消息  顶部
 
aeolus
注册会员
Rank: 2


UID 110669
精华 0
积分 74
帖子 84
金钱 74 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2008-2-19
状态 离线
[推荐阅读] 知道赚钱的秘籍了
收藏了!!
2008-2-20 08:33 AM#8
查看资料  发短消息  顶部
 
aeolus
注册会员
Rank: 2


UID 110669
精华 0
积分 74
帖子 84
金钱 74 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2008-2-19
状态 离线
[推荐阅读] 【长沙】招聘LAMP架构开发人员,UI设计人员
收藏了!
2008-2-21 03:39 PM#9
查看资料  发短消息  顶部
 
zzh203 (zzh203)
新手上路
Rank: 1
初级会员



UID 29427
精华 0
积分 21
帖子 23
金钱 21 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2004-6-17
状态 离线
[推荐阅读] 谁有类似taobao的分页?
好久没来,顶一下.
2008-3-11 04:33 PM#10
查看资料  访问主页  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.031033 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP