gpt4 book ai didi

php - 如何实现论坛权限

转载 作者:可可西里 更新时间:2023-11-01 07:24:09 27 4
gpt4 key购买 nike

我已经开始在我的 MVC 框架上用 PHP 开发一个论坛应用程序,我已经到了为成员分配权限的阶段(例如:READ、WRITE、UPDATE、DELETE)。

现在,我知道我可以在数据库中的用户表下添加 5 列并将它们设置为 1 | 0,但如果我想添加其他规则(例如 MOVE),这对我来说似乎太多了。

我如何才能将这些权限动态分配给单独的用户?

我听说过使用位掩码,但如果我能在继续之前完全理解它们就太好了。

你有我如何实现这个的例子吗?

最佳答案

当表示为二进制时,权限位掩码最好理解,每个数字代表打开或关闭的权限。因此,如果权限 X、Y 和 Z 存在,而我只能访问 X 和 Z,101 将表示我拥有授予我的第一个和第三个权限,但没有第二个。二进制数 101 等同于十进制数 5,因此这就是最终存储在数据库中的数字。与字符串或多个小整数相比,单个小整数的存储效率要高得多。

编辑:我意识到利用现有的转换函数来快速实现是多么容易。这是一个示例。

<?php
function bitmask_expand($n) {
// 9 returns array(1, 0, 0, 1)
return str_split(base_convert($n, 10, 2));
}

function bitmask_compact($a) {
// array(1, 0, 0, 1) returns 9
return (int) base_convert(implode($a), 2, 10);
}

$ns = range(0, 7);
foreach($ns as $n) {
print_r($b = bitmask_expand($n));
echo bitmask_compact($b), "\n\n";
}

如果您使用循环而不是从字符串中返回和返回字符串,您可能会获得更好的性能,但这非常清楚地说明了原理。

关于php - 如何实现论坛权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2937291/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com