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.
Advertisement
Answer
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