Trefili jste hřebíček na hlavičku, ale existuje o něco efektivnější způsob, jak to udělat.
Rozšiřte základní ovladače jedním způsobem (věřím, že to původně načrtl Phil Sturgeon), ale shrnu to zde:
Viz tento článek pro velmi obsáhlý zápis.
ale v podstatě:
<?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!
}
}
}
takže nyní, pokud chcete omezit přístup, jednoduše:
class Secret_page extends MY_Controller {
// your logged in specific controller code
}
a rozšířený ovladač automaticky zkontroluje, zda je uživatel přihlášen v konstruktoru.
Pokud jde o způsob, pravděpodobně bych jako hodnotu nastavil user_id, abych zkontroloval, zda je nastaven, nebo možná uživatelská "skupina" - pak můžete získat uživatelská oprávnění a různé úrovně přístupu ve vašem systému.
doufám, že to trochu pomůže.
upravit
Přidejte 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 );
}
}
Protože používáte CI 2.0, budete muset umístit MY_Controllers do Application/CORE spíše než do knihoven.
Moje aplikace/jádro vypadá trochu jako:
Admin_Controller.php
MY_Controller.php
Public_Controller.php