gpt4 book ai didi

php - 以二进制设置权限

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:55:12 24 4
gpt4 key购买 nike

我在学校看到一个使用二进制字符串设置权限的系统。

假设 101001 = 41

所以:

  • 1 可以是第 1 页的权限
  • 2可以是第2页的权限
  • 4可以是第3页的权限
  • 8可以是第4页的权限
  • 16可以访问第5页
  • 32可以是第6页的权限

假设我得到了上面的二进制字符串 (101001)。我可以访问第 1、4 和 6 页。

我如何在 PHP 中执行此操作?假设我在 MySQL 中有一个名为 perms 的字段存储在 dec 中,因此 101001 将为 41。我如何知道 41 等于 PHP 中的 1、8 和 32?

谢谢。

最佳答案

听起来你在谈论位和按位运算符。最简单的设置方法是为每个权限定义常量

const POST   = 1;
const DELETE = 2;
const UPDATE = 4;
const READ = 8;

一旦定义了这些,就可以很容易地使用按位运算符进行比较:

$userValue = '1101';

if ($userValue & self::POST) {
echo 'Can Post';
}

if ($userValue & self::DELETE) {
echo 'Can Delete';
}

if ($userValue & self::UPDATE) {
echo 'Can Update';
}

if ($userValue & self::READ) {
echo 'Can Read';
}

这就是 PHP 自己的常量有多少起作用了。如果您曾经使用诸如 E_ALL & E_DEPRECATED 之类的东西设置错误报告,那么您实际上是在使用二进制数。

关于php - 以二进制设置权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10504778/

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