首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按用户级别限制内容

按用户级别限制内容
EN

Stack Overflow用户
提问于 2017-01-18 15:36:46
回答 1查看 52关注 0票数 0

基本上,我试图限制登录用户所能看到的内容,这取决于他们的排名。内容有几行,都有不同的等级要求。如果用户没有所需的级别,他将无法查看该行。然而,在这里的问题是,如果一行比它下面的任何行都有更高的等级要求,并且用户没有该级别,那么下面的所有行也都是不可见的。

代码语言:javascript
复制
public function Categories() {
    global $Template, $CatArray;

    $CatArray = array();
    $PermissionTable = array();

    $QueryCat = $this->mysqli->query("SELECT * FROM categories ORDER BY id ASC");

    while($FetchCat = $QueryCat->fetch_array()) {
        $PermissionTable["category"] = array("id" => $FetchCat["id"]); // store category ID as an id sub-array
        $data = explode(",", $FetchCat["ranks"]); // the ranks row in the database contains all ranks that can see this category, so here we split them up.
        foreach($data as $number) {
            $PermissionTable["category"] += array(
                "rank" => $data // apply rank requirements in a sub-array again
            );
        }

        if(in_array($Template["user"]["user_group"], $PermissionTable["category"]["rank"])) { // here, if the users rank is in the rank sub-array, they will be able to see it
            $CatArray[] = $FetchCat;
        } else { // otherwise display nothing
            $CatArray[] = null;
        }
    }

    $Template["CatArray"] = $CatArray;
    return $CatArray;
}

更新:这就是我的意思

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-18 16:30:38

我做了一些重构,但本质上,您将使用不同的函数来查看用户是否可以看到某个类别:

代码语言:javascript
复制
public function Categories() {
    global $Template, $CatArray;

    $CatArray = array();
    $PermissionTable = array();

    $QueryCat = $this->mysqli->query("SELECT * FROM categories ORDER BY id ASC");

    while($FetchCat = $QueryCat->fetch_array()) {
        $categoryRanks = explode(",", $FetchCat["ranks"]); // the ranks row in the database contains all ranks that can see this category, so here we split them up.

        $userCategoriesPermitted = in_array($Template["user"]["user_group"], $categoryRanks); //here we check if user rank is inside category rank

        if($userCategoriesPermitted) {
            $CatArray[] = $FetchCat; //add to return array
        }
    }

    $Template["CatArray"] = $CatArray;
    return $CatArray;
}

但这只是反映了一个不遵循第一范式的糟糕的数据库设计

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41723403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档