Я бы выбрал другой подход, очень похожий на то, что @atno сказал: вы используете шаблон MVC, поэтому выполнение такого рода проверок в вашем представлении «логически» неправильно, а также идет вразрез с подходом DRY.
Я бы выполнил проверку в контроллере, используя функцию, имеющуюся в модели, и загрузил соответствующий вид в соответствии с результатами:
class Mycontroller extends CI_Controller {
function index() //just an example
{
$this->load->model('mymodel');
if($this->mymodel->is_logged())
{
$this->load->view('ok_page');
}
else
{
$this->load->view('not_logged_view');
//OR redirect('another_page','refresh')
}
}
}
В вашей модели:
function is_logged()
{
$logged = $this->session->userdata('user_id');
if ($logged)
{
return TRUE;
} else {
return FALSE;
}
}
Если вам нужно что-то сделать программно, то для каждого метода контроллера (например, проверка входа в систему) вы можете проверить внутри конструктора:
function __construct()
{
parent::__construct();
// check code here
}
Таким образом, вы получите проверкуперед вызовом любого метода контроллера, т. е. при инициализации контроллеров.
ОБНОВЛЕНИЕ : использование модели может быть здесь излишним, вы можете просто проверить, что возвращает $ this-> session:
function index() { // or mypage() or whatever
if($this->session->user_data('user_id'))
{
$this->load->view('ok_page');
}
else
{
$this->load->view('not_ok_page');
}
}