所以代码在这里:
// 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')
时,我都不会收到此错误。就像我之前说过的,我不明白出了什么问题。
答案 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]))
进行考虑