【发布时间】:2021-05-15 20:33:09
【问题描述】:
我有一系列订阅/计划(访问级别):
define('PLAN_A', 0); // 0001
define('PLAN_B', 2); // 0010
define('PLAN_C', 4); // 0100
define('PLAN_D', 8); // 1000
define('PLAN_E', 16); // 10000
一个用户可以订阅一个或多个计划。
$user_one = array(PLAN_A, PLAN_C); // is subscribed to two plans
$user_two = array(PLAN_C); // is only subscribed to one plan
“流程”需要某个子脚本计划级别 - 或多个计划级别:
$process_1 = array(PLAN_B); // requires only PLAN_B subscripton
$process_2 = array(PLAN_B, PLAN_D); // requires either PLAN_B or PLAN_C subscription
我想检查$user_one是否有'权限'访问$process_1,并单独检查$user_one是否有权限访问$process_2。并对$user_two 进行同样的检查。 (“权限”是指用户是否拥有流程所需的订阅计划。)
看来我需要检查流程的订阅要求中是否包含任何用户计划订阅(一个或多个)。
我尝试使用按位检查(这就是 PLAN 具有二进制值的原因),但这仅适用于检查 $process_1 。如何检查 $user_1 是否可以访问 $process_2 ?或者,如何检查用户数组的任何值是否包含在流程需求数组的任何值中?
【问题讨论】:
-
您可能想要php.net/manual/en/function.array-intersect.php 并检查其他类似array_diff 等
-
这样的事情能解决你的问题吗? sandbox.onlinephpfunctions.com/code/…(刚刚更新了小修复)
标签: php arrays privileges