Trafiłeś w gwóźdź w głowę, ale jest na to nieco skuteczniejszy sposób.
Rozszerz podstawowe kontrolery w jedną stronę (chyba, że zostało to pierwotnie nakreślone przez Phila Sturgeona), ale podsumuję tutaj:
Zobacz ten artykuł za bardzo dogłębny opis.
ale w istocie:
<?php
class MY_Controller extends Controller
{
function __construct()
{
parent::Controller();
if (! $this->session->userdata('first_name'))
{
redirect('login'); // the user is not logged in, redirect them!
}
}
}
więc teraz, jeśli chcesz ograniczyć dostęp, po prostu:
class Secret_page extends MY_Controller {
// your logged in specific controller code
}
a rozszerzony kontroler automatycznie sprawdzi, czy użytkownik jest zalogowany w konstruktorze.
jeśli chodzi o sposób, prawdopodobnie ustawiłbym user_id jako wartość, aby sprawdzić, czy jest ustawiony, czy może użytkownik "grupa" - wtedy możesz uzyskać uprawnienia użytkownika i różne poziomy dostępu w swoim systemie.
mam nadzieję, że to trochę pomoże.
edytuj
Dodaj to do application/config.php
/*
| -------------------------------------------------------------------
| Native Auto-load
| -------------------------------------------------------------------
|
| Nothing to do with cnfig/autoload.php, this allows PHP autoload to work
| for base controllers and some third-party libraries.
|
*/
function __autoload($class)
{
if(strpos($class, 'CI_') !== 0)
{
@include_once( APPPATH . 'core/'. $class . EXT );
}
}
Ponieważ używasz CI 2.0, będziesz musiał umieścić MY_Controllers wewnątrz Application/CORE, a nie w bibliotekach.
Moja aplikacja/rdzeń wygląda trochę tak:
Admin_Controller.php
MY_Controller.php
Public_Controller.php