Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 存储用户id与用户组的顺序_Php_Json - Fatal编程技术网

Php 存储用户id与用户组的顺序

Php 存储用户id与用户组的顺序,php,json,Php,Json,我目前正在为一个论坛开发一个自定义插件,它会检查一个json文件,看看用户是否有权限管理某个组。我想知道我应该以什么顺序存储这些信息 假设我的演示信息是:用户1和2可以访问编辑组A。用户1也可以访问编辑组B 订单1-首先是ID,然后是组(实体模型) 订单2-先分组,然后Id(实体模型) 使用php时,哪一个更容易管理/使用?(或者在json中存储数据时,这两个选项中的任何一个都是错误的吗?我应该使用其他组合吗?我不想使用MySQL,因为它将是一个非常小的用户集,可以管理这些组)每当我看到这样的问

我目前正在为一个论坛开发一个自定义插件,它会检查一个json文件,看看用户是否有权限管理某个组。我想知道我应该以什么顺序存储这些信息

假设我的演示信息是:用户1和2可以访问编辑组A。用户1也可以访问编辑组B

订单1-首先是ID,然后是组(实体模型)

订单2-先分组,然后Id(实体模型)


使用php时,哪一个更容易管理/使用?(或者在json中存储数据时,这两个选项中的任何一个都是错误的吗?我应该使用其他组合吗?我不想使用MySQL,因为它将是一个非常小的用户集,可以管理这些组)

每当我看到这样的问题,其中没有真正正确的答案,因为有太多的可能性,我倾向于认为OP只是试图在他们的研究中尽可能详尽和迂腐,以找到最好的选择,这确实是一种极大的好奇心,非常适合编程。知道了这一点,这里有一些想法

思想

我认为你应该换一种方式来看待这个问题。当用户可以通过他们被授予的特权来区分时,您实际上是在定义角色。每个角色的区别在于其对内容的访问级别以及可以修改内容的程度

当这样构建它时,请考虑金字塔。最有特权的角色对所有内容都有最好的概述,因此可以根据自己的判断对其进行修改。这些人很少。下降金字塔会导致金字塔的每一层都有越来越多的人,对内容的概述和修改内容的能力不断下降。这将一直持续到您到达金字塔的底部,或者“基本”用户角色,默认情况下,任何社区的大多数成员都将被授予该角色。它们是金字塔的基础,但很少有特权。 这意味着社区高层的用户在他们的决策中被赋予了更大的权重。例如,假设社区中的最高角色是“管理员”。任何被授予此角色的用户都可以做任何事情。这是一个很大的责任。要将其加权,此角色的权重将为100。管理员之下是“版主”。他们对社区至关重要,但授予他们删除整个类别和所有子内容的能力可能过于强大;他们应该被允许禁止用户和删除一些内容。如果管理员在降级他们的角色之前解雇他们,他们可能会彻底摧毁社区。知道了这一点,版主确实有份量,但没有管理员那么重要。它们的权重为75。社区需要“看门人”来清理垃圾邮件和转发,但不应允许他们禁止或删除用户。因此,将它们的权重指定为50。这种权重分配将一直持续,直到定义了所有角色,每个角色都具有不同的权限

问题

当然,将这两者结合起来,您可以将特定的用户ID硬编码为特定的组ID,反之亦然,但在某些情况下,这可能会变得难以管理,特别是考虑到所涉及的重复

然后考虑,组应该只由具有给定权重的用户访问。例如,组A的用户访问权重为25,组B的用户访问权重为10。这意味着任何权重为25或更多的用户都将自动访问组a,当然,由于组B只需要权重为10的用户,因此任何可以访问组a的用户也肯定可以访问组B,因为25>10。在金字塔中,25等于或大于用户访问权重为25或10的组。使用这种类型的设置,可以有几十个组,每个组都有自己的用户权重访问权限。此外,这是需要分配给组的唯一变量,而不必为每个组保留复杂的用户访问列表,反之亦然,用户可以跟踪不断增长的组ID列表

用这些知识,考虑你提供的例子。用户1可以访问编辑组A和B。用户2只能访问编辑组B。这意味着用户1具有更多权限。如果用户1拥有更多的特权,他也恰好比用户2更重要。假设用户1的权重为30,而用户2的权重为15。结合刚才描述的组场景,这意味着用户1(权重:30)可以肯定地访问组A(权重用户访问:25)和组B(权重用户访问:10),因为30>25>10。另一方面,用户2只能访问组B,因为15>10。此外,这意味着,虽然用户2不能访问组A,但并不意味着他不能访问(例如)最小用户重量要求为5的组C,因为15>10>5。此外,这显然意味着用户1也可以访问组C

后记

有一天你醒来,意识到社区无产阶级不应该进入B组,他们的农民角色权重为10。B组应该是为社区中更有尊严的人设计的,权重大约为11或更多,因此您将B组的最低角色权重要求增加到11。只需对组B分配一个整数进行一次更改,您就可以阻止每个权重小于等于10的用户访问他们曾经珍爱的组B。无产者不高兴,但您不在乎,因为您是社区之神,权重远远超过9000,您可以做任何您想做的事情。您也可以这样做,而无需修改几十个、数百个、数千个或数百万个特定的用户/组访问列表,如前所述
{
  "1": [
    "A",
    "B"
  ],
  "2": [
    "A"
  ]
}
{
  "A": [
    "1",
    "2"
  ],
  "B": [
    "1"
  ]
}