在CodeIgniter中调用另一个Controller中的Controller函数

发布于 2024-11-19 13:02:35 字数 765 浏览 0 评论 0原文

我的 codeigniter 应用程序中有一个控制器“用户”。该控制器有一个名为 logged_user_only() 的函数:

public function logged_user_only()
    {
        $is_logged = $this -> is_logged();
        if( $is_logged === FALSE)
        {
            redirect('user/login_form');
        }
    }

由于此函数调用另一个名为 is_logged() 的函数,该函数仅检查会话是否已设置,如果是,则返回 true,否则返回 false。

现在,如果我将此函数放在同一控制器内任何函数的开头,它将检查用户是否未登录,否则将重定向到 login_form 否则继续。这很好用。 例如,

public function show_home()
    {
        $this -> logged_user_only();
        $this->load->view('show_home_view');
    }

现在我想在另一个控制器的函数中调用这个 logged_user_only() 函数来检查用户是否登录?

附言。如果不能这样做,或者不建议这样做,我应该将该功能放在哪里以便在多个控制器中访问?谢谢。

I have a controller "user" in my codeigniter application. This controller has a function called logged_user_only():

public function logged_user_only()
    {
        $is_logged = $this -> is_logged();
        if( $is_logged === FALSE)
        {
            redirect('user/login_form');
        }
    }

As this function calls another function called is_logged(), which just checks if the session is set, if yes it returns true, else returns false.

Now if i place this function in the begining of any function within same controller, it will check if the user is not logged, it will redirect to login_form otherwise continue. This works fine.
For example,

public function show_home()
    {
        $this -> logged_user_only();
        $this->load->view('show_home_view');
    }

Now I would like to call this logged_user_only() function in a function of another controller to check if the user is logged in or not?

PS. If this can not be done, or is not recommended, where should i place this function to access in multiple controllers? Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

走野 2024-11-26 13:02:35

为什么不扩展控制器,以便登录方法位于我的控制器内(在应用程序的核心文件夹内),并且所有其他控制器都扩展它。例如,您可以:

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;
         }
    }
}

有关更多信息,请访问: 创建核心系统类

新链接在这里:
https://www.codeigniter.com/user_guide/general/ core_classes.html?highlight=core%20classes

Why not extend the controllers so the login method is within a MY controller (within the core folder of your application) and all your other controllers extend this. For example you could have:

class MY_Controller extends CI_Controller {
    public function is_logged()
    {
        //Your code here
    }
}

and your main controllers could then extend this as follows:

class Home_Controller extends MY_Controller {
    public function show_home()
    {
         if (!$this->is_logged()) {
           return false;
         }
    }
}

For further information visit: Creating Core System Classes

New link is here:
https://www.codeigniter.com/user_guide/general/core_classes.html?highlight=core%20classes

草莓酥 2024-11-26 13:02:35

使用 CI 无法从另一个控制器调用控制器,因此不建议这样做。

将您的 logged_user_only 移动到助手中,甚至更好地移动到您扩展所有控制器的核心控制器 (MY_Controller),请参阅 http://codeigniter.com/wiki/MY_Controller_-_how_to_extend_the_CI_Controller/

Calling a controller from another is not possible with CI and not recommended.

Either move your logged_user_only into a helper or even better a core controller that you extend all of your controllers from (MY_Controller) see http://codeigniter.com/wiki/MY_Controller_-_how_to_extend_the_CI_Controller/

心的憧憬 2024-11-26 13:02:35

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

function __construct(){
     parent::__construct();
     $this->load->library('../controllers/user');
}

现在,在控制器中的任何位置调用用户控制器的此函数,

$this->user->logged_user_only();

just load user controller as library from your controller

function __construct(){
     parent::__construct();
     $this->load->library('../controllers/user');
}

Now, call this function of user controller any where in your controller,

$this->user->logged_user_only();
空袭的梦i 2024-11-26 13:02:35

控制器中的功能登录

$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 login in Controller Login

$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');
    } 

Function Construct in Controller user

if ($this->session->userdata('logged_in') == TRUE && $this->session->userdata('role') == "user") {} else {redirect('home');}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文