键定义,值集,但仍定义为null

时间:2017-06-11 19:38:45

标签: php mysql json

所以代码在这里:

// Check to see if user has admin permissions
if($user->hasPermission('admin')) {
    // Display Admin Backpage Link
    echo "<li><a href='" . Config::get('links/app_root') . "admin/'>Admin</a></li>";
}
显然,当我调用hasPermission()方法时,我指的是要检查用户是否拥有权限admin。

这是我的hasPermission方法:

// User Has Permission Check
public function hasPermission($key) {
    // Pull from the groups table, where the id (group) equals the assigned group of the user
    // id: 1 for standard users (No permissions/Json stored)
    // id: 2 for Moderators (Json: {"moderator":1}
    // id: 3 for admins (Json: {"admin":1,"moderator":1}
    $groups = $this->_db->get('groups', array('id', '=', $this->data()->groups));

    // Check if user is in a group or not
    if($groups->count()) {
        $permissions = json_decode($groups->first()->permissions, true);
        if($permissions[$key] == true) {
            return true;
        }
    }

    // user does not have permission
    return false;
}

在我打电话之后,我收到了这个错误:

  

注意:未定义索引:admin在/ Applications / XAMPP / xamppfiles / htdocs / OOP登录系统/ core / classes / User.php第127行

第127行是这一行:

if($permissions[$key] == true) {

我不明白为什么admin是null。我的数据库权限管理员在我的MySQL数据库中设置如下:

{
    "admin": 1,
    "moderator": 1
}

真的很疯狂,这一切都很好,我完全没有编辑用户类。现在我有了这位主持人&#39;权限以及JSON设置为:

{
    "moderator": 1
}

每当我致电hasPermission('moderator')时,我都不会收到此错误。就像我之前说过的,我不明白出了什么问题。

2 个答案:

答案 0 :(得分:0)

来自

的第127行
if($permissions[$key] == true) {

为:

if(!empty($permissions[$key])) {

答案 1 :(得分:0)

为了帮助缓解错误,可能是封装在try catch块中的好习惯。

try {
    $error = 'Always throw this error';
    throw new Exception($error);

    // Code following an exception is not executed.
    echo 'Never executed';

} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

并根据评论使用if(!empty($ permissions [$ key]))

进行考虑