Php 在CodeIgniter中的另一个控制器中调用控制器函数

Php 在CodeIgniter中的另一个控制器中调用控制器函数,php,codeigniter,class-visibility,codeigniter-classloader,Php,Codeigniter,Class Visibility,Codeigniter Classloader,我的codeigniter应用程序中有一个控制器“用户”。此控制器有一个名为logged\u user\u only()的函数。: 当此函数调用另一个名为的函数时,它将被记录(),该函数只检查会话是否已设置,如果已设置,则返回true,否则返回false 现在,如果我将此函数放在同一控制器中任何函数的开头,它将检查用户是否未登录,它将重定向到login\u form,否则继续。这个很好用。 比如说, public function show_home() { $this

我的codeigniter应用程序中有一个控制器“用户”。此控制器有一个名为
logged\u user\u only()的函数。

当此函数调用另一个名为
的函数时,它将被记录()
,该函数只检查会话是否已设置,如果已设置,则返回true,否则返回false

现在,如果我将此函数放在同一控制器中任何函数的开头,它将检查用户是否未登录,它将重定向到
login\u form
,否则继续。这个很好用。 比如说,

public function show_home()
    {
        $this -> logged_user_only();
        $this->load->view('show_home_view');
    }
现在我想在另一个控制器的函数中调用这个
logged\u user\u only()
函数来检查用户是否登录


注:如果无法做到这一点,或不建议这样做,我应该将此功能放置在多个控制器中的何处进行访问?谢谢。

使用CI无法从另一个控制器调用控制器,因此不推荐使用


将您的
logged\u user\u only
移动到助手中,或者更好地移动到扩展所有控制器的核心控制器中(
MY\u controller
),请参见

为什么不扩展控制器,使登录方法位于MY controller(在应用程序的核心文件夹中)中,而您的所有其他控制器都扩展了该方法。例如,您可以:

class MY_Controller extends CI_Controller {
    public function is_logged()
    {
        //Your code here
    }
}
然后,您的主控制器可以将其扩展如下:

class Home_Controller extends MY_Controller {
    public function show_home()
    {
         if (!$this->is_logged()) {
           return false;
         }
    }
}
欲了解更多信息,请访问:

新链接如下:
控制器登录中的函数登录

$data =array('username' => $this->input->post('username'), 'password' => $this->input >post('password')) $query = $this->db->get_where('usertable',$data)
    if ($query->num_rows() == 1) {
        $data = array(
            'username' => $this->input->post('username'),
            'logged_in' => TRUE,
            'role' => "user");
        $this->session->set_userdata($data);
        redirect('home');
    } 
控制器用户中的函数构造

if ($this->session->userdata('logged_in') == TRUE && $this->session->userdata('role') == "user") {} else {redirect('home');}

只需将用户控制器作为库从控制器中加载即可

function __construct(){
     parent::__construct();
     $this->load->library('../controllers/user');
}
现在,在控制器中的任何位置调用用户控制器的此函数

$this->user->logged_user_only();
$this->user->logged_user_only();