用户权限和未定义索引:通知消息

时间:2014-06-13 07:47:49

标签: php if-statement

在我的网站上,我设置了用户组,根据用户的权限显示不同的内容。

这里的例子是我的表:

enter image description here

我得到的问题是一堆通知说明:

  • 未定义的索引:所有者
  • 未定义的索引:renter
  • 未定义的索引:admin
  • 未定义的索引:newuser
  • 未定义的索引:非用户

它说来自第105行的class \ User.php

这是:

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

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

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

    }

第105行是:if($permissions[$key] == true) {

例如,当我打电话给根据用户权限显示不同的导航时,我这样做:

<?php
$user = new User;


if($user->hasPermission('owner')) {
include_once($_SERVER['DOCUMENT_ROOT']."/inc/navs/owner-nav.php");
}

elseif($user->hasPermission('renter')) {
include_once($_SERVER['DOCUMENT_ROOT']."/inc/navs/renters-nav.php");
}

elseif($user->hasPermission('admin')) {
include_once($_SERVER['DOCUMENT_ROOT']."/inc/navs/admin-nav.php");
}

elseif($user->hasPermission('new')) {
include_once($_SERVER['DOCUMENT_ROOT']."/inc/navs/newuser-nav.php");
}

elseif (!$user->hasPermission('nonuser')){
include_once($_SERVER['DOCUMENT_ROOT']."/inc/navs/newuser-nav.php");
}

我收到除了所有者之外的每个权限的通知消息,因为它位于列表顶部。如果我将管理员放在列表顶部,那么当我处于管理员模式时,我就不会收到任何通知。等等。

我不明白为什么会这样,并且想知道是否有人可能有解决方案。

我意识到它们只是通知,并且在我实时运行时不会影响网站,但它仍然会在我的目录中抛出一个错误文件,只是让我烦恼。

无论如何,如果有人有想法或建议,我很乐意听到。

2 个答案:

答案 0 :(得分:2)

您需要使用 isset 来确保密钥确实存在,

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

答案 1 :(得分:1)

将第105行更改为

if(isset($permissions[$key]) && $permissions[$key] == true)