Mysql
 sql >> Database >  >> RDS >> Mysql

Qual è la procedura migliore per limitare pagine specifiche agli utenti che hanno effettuato l'accesso solo in Codeigniter?

Hai colpito nel segno, ma c'è un modo leggermente più efficiente per farlo.

Estendi i controller di base, in un modo (credo originariamente delineato da Phil Sturgeon) ma riassumerò qui:

Vedi questo articolo per una scrittura molto approfondita.

ma in sostanza:

<?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!
        }
    }
}

quindi ora se vuoi limitare l'accesso, semplicemente:

class Secret_page extends MY_Controller {

 // your logged in specific controller code
}

e il controller esteso verificherà automaticamente se l'utente è loggato nel costruttore.

per quanto riguarda come, probabilmente imposterei user_id come valore per verificare se è impostato, o forse un "gruppo" di utenti, quindi puoi ottenere autorizzazioni utente e vari livelli di accesso nel tuo sistema.

spero che questo aiuti un po'.

modifica

Aggiungilo a 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 );
    }
}

Poiché stai utilizzando CI 2.0, dovrai posizionare i MY_Controllers all'interno di Application/CORE anziché nelle Librerie.

La mia applicazione/core assomiglia un po' a:

Admin_Controller.php
MY_Controller.php
Public_Controller.php