CodeIgniter访问控制器基于角色

时间:2017-03-07 19:54:54

标签: php codeigniter

我有这个CodeIgniter控制器,我只是尝试一下,如果用户有一个或两个角色,他可以访问这个控制器,否则它将重定向它,但它无法正常工作。请Hlep。

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Users extends CI_Controller {
    public function __construct()
    {
        parent::__construct();
        $this->load->helper('my_helper');   
        $userAdmin=$this->session->userdata('_manage');
        if($userAdmin==false){
            redirect(base_url()."manage/index");
            exit();
        }
        $userRole=$this->session->userdata('_manage_role');
        if($userRole != 1 || $userRole != 2){
            redirect(base_url()."manage/index");
            exit();
        }
        $this->load->model('UserModel');        
    }
    // Manage Section > All Users Pagse > All Users
    public function index()
    {
        $Users  = $this->UserModel->allUsers();     
        $assignData=array('users'=>$Users);
        $this->load->view('manage/header',$assignData);
        $this->load->view('manage/users');
        $this->load->view('manage/footer');     
    }
    public function deleteUser($user_id)
    {
        $this->userModel->deleteUser($user_id);
        redirect(base_url().'manage/users');
    }   
}

1 个答案:

答案 0 :(得分:0)

我想你想要这一行:

if($userRole != 1 || $userRole != 2) { redirect(...) }

if($userRole != 1 && $userRole != 2) { redirect(...) }

如果拆分||测试两个if,它变成:

if ($userRole != 1) { redirect(...) }
if ($userRole != 2) { redirect(...) }

如果$ userRole = 1,则第一个if失败。如果$ userRole = 2则失败第二个if。所以也没有办法过去。