Codeigniter - 在不影响特定控制器功能的情况下向构造函数添加代码

时间:2017-06-07 09:37:10

标签: php codeigniter codeigniter-3

此问题的简短版本

如何在Codeigniter构造函数中编写类似这样的内容(if(Controller Function is Not "Login()" Function)

if(Controller Function is Not "Login()" Function)
{
    if(empty($this->session->userdata('user_id'))){
        redirect(base_url());
    }
}

此问题的长版本如果不清楚短版本

这是我的codeigniter项目的管理控制器

class Admin extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        /**
        * 
        * 
        *  Here - I am going to check session is set or not.....
        * 
        * 
        */

    }

    public function login(){

    }

    public function update(){

    }

    public function edit(){

    }

    public function insert(){

    }

        /**
        * 
        * 
        *  And Many More Functions
        * 
        * 
        */

}

我将把以下代码部分添加到构造函数

if(empty($this->session->userdata('user_id'))){
    redirect(base_url());
}

当我写这篇文章时,即使没有会话,我也无法进入login()函数。如何在构造函数中编写上述代码,这些代码不会影响登录功能。

我看起来像这样,

if(Controller Function is Not "Login()" Function)
{
    if(empty($this->session->userdata('user_id'))){
        redirect(base_url());
    }
}

2 个答案:

答案 0 :(得分:0)

1.设置默认控制器是登录

function __construct()
{
    if(!($this->session->has_userdata('user_id')) && $this->router->fetch_method() != "login"){
        redirect(base_url());
    }
}

2.如果没有将默认控制器设置为登录

function __construct()
{
    if(!($this->session->has_userdata('user_id'))&& $this->router->fetch_method() != "login"){
        redirect(base_url()."login");
    }
}

答案 1 :(得分:0)

你可以使用这样的东西

function __construct()
{
    if(!($this->session->has_userdata('user_id')) && $this->router->fetch_method()!='login'){
        redirect(base_url());
    }
}