Php 权限组工作不正常

Php 权限组工作不正常,php,mysql,permissions,membership,Php,Mysql,Permissions,Membership,好的,我已经建立了一个基本的会员制,在我的数据库中有组(成员、管理员和版主)。 这些组有3个字段:id、名称和权限。成员我的权限为空,管理员有{“admin”:1 “主持人”:1},主持人有{“主持人”:1} 我在文件夹classes中的user.php文件中有一个简单的函数 功能 class User { public function hasPermission($key) { $group = $this->_db->query("SELECT

好的,我已经建立了一个基本的会员制,在我的数据库中有组(成员、管理员和版主)。 这些组有3个字段:id、名称和权限。成员我的权限为空,管理员有{“admin”:1 “主持人”:1},主持人有{“主持人”:1}

我在文件夹
classes
中的
user.php
文件中有一个简单的函数

功能

 class User {
        public function hasPermission($key) {
        $group = $this->_db->query("SELECT * FROM groups WHERE id = ?", array($this->data()->group));

        if($group->count()) {
            $permissions = json_decode($group->first()->permissions, true);

            if($permissions[$key] === 1) {
                return true;
            }
        }

        return false;
    }   
} 
然后,在一个文件
admin.php
中,我有一段简单的代码,如果登录的用户是admin,则应该显示一个echo

ps:我需要
init.php
文件,该文件包含所需的
classes/User.php
文件,因此我不需要调用多个文件

代码

<?php
}

if($user->hasPermission('admin')) {
        echo '<p>You are a admin!</p>';

    } else {
    echo 'You need to <a href="login.php">log in</a> or <a href="register.php">register</a>!';
    }

?>

当管理员登录时,应该显示回显,不幸的是,我只是得到一个空白页面

问题

 class User {
        public function hasPermission($key) {
        $group = $this->_db->query("SELECT * FROM groups WHERE id = ?", array($this->data()->group));

        if($group->count()) {
            $permissions = json_decode($group->first()->permissions, true);

            if($permissions[$key] === 1) {
                return true;
            }
        }

        return false;
    }   
} 
所以我的问题是,有没有人知道为什么这不起作用,因为我有一个管理员权限集用户登录,但在
admin.php
上什么都没有

组表

用户表

好吧,出于某种原因,您需要登录或注册!echo显示它无法识别管理员何时登录


我所要做的就是允许不同的组访问不同的页面,因为我之前的答案被删除了。。再来一次

您的问题是您在此处执行的类型安全比较:

if($permissions[$key] === true) {
    return true;
}
您的数组是由json对象
{“版主”:1}
填充的,在php中,该对象转换为
array('mediator'=>1)
。您正在使用类型安全比较将布尔值
true
与整数
1
进行比较。这将失败,因为类型不匹配。有关更多详细信息,请参阅

您可以通过使用类型不安全比较或将
$permissions
转换为布尔值来解决此问题

if ((bool)$permissions[$key] === true) // Both are now of type boolean and will be compared.


好吧,因为我之前的答案被删除了。。再来一次

您的问题是您在此处执行的类型安全比较:

if($permissions[$key] === true) {
    return true;
}
您的数组是由json对象
{“版主”:1}
填充的,在php中,该对象转换为
array('mediator'=>1)
。您正在使用类型安全比较将布尔值
true
与整数
1
进行比较。这将失败,因为类型不匹配。有关更多详细信息,请参阅

您可以通过使用类型不安全比较或将
$permissions
转换为布尔值来解决此问题

if ((bool)$permissions[$key] === true) // Both are now of type boolean and will be compared.


好吧,因为我之前的答案被删除了。。再来一次

您的问题是您在此处执行的类型安全比较:

if($permissions[$key] === true) {
    return true;
}
您的数组是由json对象
{“版主”:1}
填充的,在php中,该对象转换为
array('mediator'=>1)
。您正在使用类型安全比较将布尔值
true
与整数
1
进行比较。这将失败,因为类型不匹配。有关更多详细信息,请参阅

您可以通过使用类型不安全比较或将
$permissions
转换为布尔值来解决此问题

if ((bool)$permissions[$key] === true) // Both are now of type boolean and will be compared.


好吧,因为我之前的答案被删除了。。再来一次

您的问题是您在此处执行的类型安全比较:

if($permissions[$key] === true) {
    return true;
}
您的数组是由json对象
{“版主”:1}
填充的,在php中,该对象转换为
array('mediator'=>1)
。您正在使用类型安全比较将布尔值
true
与整数
1
进行比较。这将失败,因为类型不匹配。有关更多详细信息,请参阅

您可以通过使用类型不安全比较或将
$permissions
转换为布尔值来解决此问题

if ((bool)$permissions[$key] === true) // Both are now of type boolean and will be compared.



我们需要查看正在生成的代码
$user
我在
其他
确定之前看到一个不需要的
}
我将修改额外的}并将$user代码添加到答案中。我们需要查看正在生成的代码
$user
我在
其他
确定之前看到一个不需要的
我将修改额外的}并将$user代码添加到答案中答案。我们需要查看正在生成的代码
$user
我在
其他
确定之前看到一个不需要的
}
我会修改额外的}并将$user代码添加到答案中。我们需要查看正在生成的代码
$user
我在
其他
确定之前看到一个不需要的
我会修改额外的}并添加$user代码。您能提供一些关于这些变量内容的更多信息吗?对
$permissions
执行一些var_转储,这样您就可以看到实际比较的内容。当你这样做的时候,还要确保你已经通过了if($group->count()){部分。帮我一个忙,用这个更新if($group->count()){part:
if($group->count()){$permissions=$group->first()->permissions;var_dump($permissions);$permissions=json\u decode($group->first()->权限,true);var_dump($permissions);var_dump($permissions[$key]);if($permissions[$key]==1){return true;}}否则{echo“无组结果!”;}
现在请执行它并发布输出。感谢您的帮助。最后出现了一个小的拼写错误…我的错,谢谢您的帮助。您能提供一些关于这些变量内容的更多信息吗?对
$permissions
执行一些变量转储,以便您可以看到您实际与之进行比较的内容。当您进行此操作时,一个请帮我一个忙,用以下内容更新if($group->count()){part:
if($group->count()){part:
if($group->count()){$permissions=$group->first()->permissions;var_dump($permissions);$permissions=json\u decode($group->first()->permissions,true);var_dump($permissions);var_dump($permissions[$key]);