php用什么系统比较好,php – 使用什么是好的权限系统?

我知道vBulletin使用了bitperms,我也使用它们但是当我到达10 ^ 63时它们停止工作,它不会处理任何大于那个数字(它是我的PHP主机).

我很想知道myBB,PhpBB,IPB,Joomla和网络上的其他脚本用于权限系统,我真的想在我的脚本中使用快速权限设置.现在我已经在每个名为permgroups的用户上实现了一个sql变量,并且有一个像1,4,5这样的值,每个数字都对应一个权限组,该权限组有一个类似的变量叫做canseepages 1,2,3,4 ,1,4,1,54,6,4,5,22,6,2,3,4,1,2对应于我所拥有的每一页.

首先,我在PHP中选择permgroups

然后我在permgroups上使用PHP的爆炸

然后我在用户可以看到的每个perm组上做一个foreach

在foreach中我运行一个sql查询来从权限组中获取canseepages变量

然后我将它附加到一个变量,所以我最终得到了一些像MASSIVE一样的东西

$variable = '1,2,3,4,5,6,7,8,9,2,22,55,44,55,33,44,11,44,33,44,11,33,44,'.

'22,33,44,11,22,33,44,33,11,22,33,44,33,22,33,44,55,44,'.

'55,54,26,77,84,645,345,233,11,4,11,3,32';

该变量表示允许用户查看的所有页面.然后我将它分解为一个数字数组,我使用in_array()来检查他们试图查看的当前页面是否在他们允许查看的页面数组内.

它现在非常快,但我只是认为必须有更快的方法来完成所有这些.

解决方法:

我想了很久以来Bit掩码是用户权限的最佳解决方案:

简短示例:

class UserPermissions()

{

private $Mask = 0;

//Levels

const PUBLIC_READ = 1;

const PUBLIC_WRITE = 2;

const PUBLIC_EDIT = 4

const PUBLIC_DELETE = 8;

//ETC

public function __construct($Mask)

{

$this->Mask = $Mask;

}

public function InvokePermission($Bit)

{

return ($Mask & $Bit); //True / False

}

public function AddPermission($Bit)

{

$this->Mask |= $Bit; //Add the bit to the mask

}

public function RevokePermission()

{

$this->Mask &= ~ $Bit;

}

public GetMask()

{

return $this->Mask;

}

}

简单使用如下:

$Permissions = new UserPermissions($User->PermissionsData);

if($Permissions->InvokePermission( Permissions:: PUBLIC_EDIT ))

{

//Use can edit

}

一些链接:

标签:php,permissions

来源: https://codeday.me/bug/20190621/1256677.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值