PHP巧妙利用位运算实现网站权限管理
作者:葛思志 | 来源:互联网 | 2013-08-07 14:31
知道了这两点权限的处理就变得简单了吧,只要在每次执行涉及权限操作的时候把用户当前的权限总值和当前操作需要的权限做位与运算。如果结果为真执行,为假做报错处理就行啦(当然也不一定时报错,你可以自己设计没有权限时的程序)
首先我们先定义4个常量来设定四种权限:
========================================================
define(ADD,1);//增加数据库记录的权限
define(UPD,2);//修改数据库记录的权限
define(SEL,4);//查找数据库记录的权限
define(DEL,8);//删除数据库记录的权限
========================================================
接下来假设有3个用户:
A用户拥有ADD-UPD-SEL-DEL四个权限,用位或运算计算A的权限总值
$a_all=ADD|UPD|SEL|DEL;//$all=15 可以注意到这个值和加法的结果是一样的
B用户拥有ADD-UPD-SEL三个权限,用位或运算计算B的权限总值
$b_all=ADD|UPD|SEL;//$all=7 这个值和加法的结果又是一样的
C用户拥有ADD-UPD两个权限,用位或运算计算C的权限总值
$c_all=ADD|UPD;//$all=3 这个值和加法的结果还是一样的
========================================================
接下来我们用位与做运算
$a_all&ADD 结果为真
$a_all&UPD 结果为真
$a_all&SEL 结果为真
$a_all&DEL 结果为真
========================================================
$b_all&ADD 结果为真
$b_all&UPD 结果为真
$b_all&SEL 结果为真
$b_all&DEL 结果为假
========================================================
$c_all&ADD 结果为真
$c_all&UPD 结果为真
$c_all&SEL 结果为假
$c_all&DEL 结果为假
========================================================
发现奥秘没有?
1、当权限总值和没有的那个权限做位与运算,结果为假
2、权限的值都是2的次方
知道了这两点权限的处理就变得简单了吧,只要在每次执行涉及权限操作的时候把用户当前的权限总值和当前操作需要的权限做位与运算。如果结果为真执行,为假做报错处理就行啦(当然也不一定时报错,你可以自己设计没有权限时的程序)。
推荐阅读
-
本文探讨了在无法使用个人身份信息的情况下,利用他人(如网络上公开的个人信息)注册游戏账号的行为及其潜在的法律和道德问题。 ...
[详细]
蜡笔小新 2024-11-23 15:35:44
-
本文由chszs撰写,详细介绍了Apache Mina框架的核心开发流程及自定义协议处理方法。文章涵盖从创建IoService实例到协议编解码的具体步骤,适合希望深入了解Mina框架应用的开发者。 ...
[详细]
蜡笔小新 2024-11-23 15:02:21
-
-
本文详细解析了LeetCode第102题——二叉树的层次遍历问题,提供了C++语言的实现代码,并对算法的核心思想和具体步骤进行了深入讲解。 ...
[详细]
蜡笔小新 2024-11-23 12:14:28
-
本文将详细介绍Fuel CMS如何基于CodeIgniter框架构建,包括其单入口模式的实现方式及关键配置文件的作用。通过分析本地环境中的index.php和.htaccess文件,我们将更好地理解Fuel CMS的核心架构。 ...
[详细]
蜡笔小新 2024-11-23 12:07:25
-
本文提供了一个详尽的前端开发资源列表,涵盖了从基础入门到高级应用的各个方面,包括HTML5、CSS3、JavaScript框架及库、移动开发、API接口、工具与插件等。 ...
[详细]
蜡笔小新 2024-11-23 12:05:53
-
本文详细介绍了在 JavaScript 编程中如何处理引号的多级嵌套问题,包括双引号、单引号以及转义字符的正确使用方法。 ...
[详细]
蜡笔小新 2024-11-23 11:47:34
-
随着越来越多的年轻人投身创业浪潮,追求事业上的突破与成功,了解并掌握创业的关键要素显得尤为重要。本文基于丰富的创业经验和深入的市场洞察,为有志于创业的读者提供了一系列实用建议和策略。 ...
[详细]
蜡笔小新 2024-11-23 11:44:30
-
本文详细介绍了B树及其变种B+树的基本概念、特性以及应用场景。B树作为一种平衡的多路查找树,在数据库和文件系统中有着广泛的应用。文章不仅解释了B树的定义,还深入探讨了B树的结构特点及操作方法。 ...
[详细]
蜡笔小新 2024-11-23 11:33:43
-
本文介绍了一种有效的方法来解决在使用UIScrollView时出现的自动向下偏移的问题,通过调整特定的属性设置,可以确保滚动视图正常显示。 ...
[详细]
蜡笔小新 2024-11-23 11:01:29
-
本文介绍如何使用Go语言编写程序,通过命令行参数指定文件路径,读取文件内容并将其输出到控制台。代码示例中包含了错误处理和资源管理的最佳实践。 ...
[详细]
蜡笔小新 2024-11-23 10:57:16
-
本文对唐代诗人李白的《赠潘侍御论钱少阳》进行了深入的解析与翻译,旨在揭示诗中所蕴含的情感及历史背景。 ...
[详细]
蜡笔小新 2024-11-23 10:54:33
-
本文介绍了在控制器中返回JSON结果的方法,并详细说明了如何利用jQuery处理和展示这些数据,为Web开发提供了实用的技巧。 ...
[详细]
蜡笔小新 2024-11-23 10:41:31
-
通过引入阿里云的人工智能技术,饿了么正逐步改善外卖配送过程中的不合理安排,减轻骑手的工作压力。 ...
[详细]
蜡笔小新 2024-11-23 10:30:43
-
本文详细介绍了五种常用的PHP排序算法——冒泡排序、选择排序、插入排序、希尔排序和堆排序。每种算法都附有代码示例,并通过打印和延时操作来直观展示排序过程。欢迎指出任何错误。 ...
[详细]
蜡笔小新 2024-11-23 10:04:31
-
Awk是一款功能强大的文本分析与处理工具,尤其在数据解析和报告生成方面表现突出。它通过读取由换行符分隔的记录,并按照指定的字段分隔符来划分和处理这些记录,从而实现复杂的数据操作。 ...
[详细]
蜡笔小新 2024-11-23 09:44:24
-