如果用户有权限,则不会重定向

时间:2014-10-12 12:20:59

标签: php codeigniter

在我的用户组中,我设置了可以检查或取消选中每个控制器名称的位置,然后单击“提交”并将名称发送到数据库。以文本/数组格式。如果尝试访问未经检查的控制器,那么我可以访问的那些控制器应该重定向'admin/error_permission'

每个用户在用户ID旁边也有用户组ID。

我如何从数据库中获取控制器的名称,然后将它们重定向到我的错误页面

表名: user_group:columns:user_group_id,name,permission

存储控制器名称的列的名称是权限 和控制器名称的存储方式类似于权限 a:2:{s:6:"access";a:1:{i:0;s:11:"column_left";}s:6:"modify";a:1:{i:0;s:11:"column_left";}}

如何在数组中编写每个控制器名称,而不是从数据库中获取这些名称。

function __construct()
{
    parent::__construct();
    if ( ! $this->session->userdata('logged_in'))
    { 
        // Allow some methods names from the database permission?
        $allowed = array(

        );
        if ( ! in_array($this->router->fetch_method(), $allowed)
        {
            // Not Allowed Access
            redirect('admin/error_permission');
        }
    }
}

1 个答案:

答案 0 :(得分:0)

$permissions = 'a:2:{s:6:"access";a:1:{i:0;s:11:"column_left";}s:6:"modify";a:1:{i:0;s:11:"column_left";}}';
$permissions_array = unserialize($permissions);

var_dump($permissions_array);

输出:

array(2) {
  'access' =>
  array(1) {
    [0] =>
    string(11) "column_left"
  }
  'modify' =>
  array(1) {
    [0] =>
    string(11) "column_left"
  }
}

if (false === array_key_exists($this->router->fetch_method(), $permissions_array))
{
            // Not Allowed Access
            redirect('admin/error_permission');
}