I have a controller \"user\" in my codeigniter application. This controller has a function called logged_user_only()
:
public function logged_use
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();
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');}
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/
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