Php 如何使用按位系统允许某些权限而不允许其他权限?
我对编写一个类非常感兴趣,该类将帮助我为不同的用户提供不同的权限(即ACL类) 我一直在研究一个伟大的方法和位运算坚持 我发现了一篇好文章。本文介绍如何使用位操作处理权限 我唯一不确定该怎么做的是如何允许用户写评论而不是发布帖子 因此,如果权限设置为:Php 如何使用按位系统允许某些权限而不允许其他权限?,php,bit-manipulation,acl,bitwise-operators,user-permissions,Php,Bit Manipulation,Acl,Bitwise Operators,User Permissions,我对编写一个类非常感兴趣,该类将帮助我为不同的用户提供不同的权限(即ACL类) 我一直在研究一个伟大的方法和位运算坚持 我发现了一篇好文章。本文介绍如何使用位操作处理权限 我唯一不确定该怎么做的是如何允许用户写评论而不是发布帖子 因此,如果权限设置为: <?php $perms = array( 'can_post' => 1, 'can_comment' => 2, 'can_edit' => 4,
<?php
$perms = array(
'can_post' => 1,
'can_comment' => 2,
'can_edit' => 4,
'can_delete' => 8
);
$user_perms = 2;
//CONDITION #1
if ($user_perms & $perms['can_comment']) {
/* He/She has permission to do this */
} else {
/* He/She doesn't have permission */
}
//CONDITION #2
if ($user_perms & $perms['can_post']) {
/* He/She has permission to do this */
} else {
/* He/She doesn't have permission */
}
?>
因此,上面的条件#1
显示工作正常,应该允许评论,但不应该允许//条件#2
,因为用户没有发布的权限
我的问题是,如何允许用户只发表评论而不发表文章?若要发布,您将有“001”,若要发表评论,您将有“010”。一旦您定义了
$perms
数组,您实际上可以从中创建自己的地图:
// can comment and post but not edit or delete:
$poster = $perms['can_post'] | $perms['can_comment'];
// can edit and delete, but not comment or post:
$janitor = $perms['can_delete'] | $perms['can_edit'];
您可以将任意数量的权限与
|
运算符组合以生成权限值。这适用于十进制数还是仅适用于二进制数?我看不到上面有任何二进制操作?@andrebruton只有当每个权限是2的幂时,它才会起作用。也就是说,你可以有一些聪明,比如说$perms['general_posting']=3
具有自动激活多个基本权限标志的权限。