2010-07-13 6 views

Répondre

3

Vos contrôles d'authentification doivent être dans une bibliothèque:

Le est un extrait d'un script CodeIgniter de authentcation de base:

class Site_sentry 
{ 
    function Site_sentry() 
    { 
     $this->obj =& get_instance(); 
    } 

function is_logged_in() 
{ 
    if ($this->obj->session) 
    { 
     if ($this->obj->session->userdata('session_logged_in')) 
     { 
      return TRUE; 
     } 
     else 
     { 
      return FALSE; 
     } 
    } 
    else 
    { 
     return FALSE; 
    } 
} 

    function login_routine() 
    { 
    //do login here (enter into session) 
    } 
} 

Cette bibliothèque est stockée dans application/bibliothèques sous un nom de fichier du nom sa classe avec le suffixe .php.

Ensuite, vous pouvez ajouter à votre fichier de configuration autoload application/conig/config.php:

$autoload['libraries'] = array('database', 'site_sentry', 'session'); 

ou le charger manuellement dans chaque contrôleur:

$this->load->library('Site_sentry); 

Ensuite, vous pouvez Vérifiez votre session depuis les contrôleurs, comme ceci:

class Class extends Controller{ 

    function Class() 
    { 
     parent::Controller(); 
     if($this->site_sentry->is_logged_in() == FALSE){ 
      redirect('managerlogin/'); 
     } 

    } 
    } 

Vérifiez également cette page de documentation http://codeigniter.com/user_guide/libraries/sessions.html; d'un intérêt particulier est le stockage de la session dans la section de la base de données.

+0

Merci beaucoup – Saqueib

0

Je ne pense pas que de le faire avec la classe est la meilleure idée. Si l'utilisateur est connecté, vous devez rechercher un indicateur (valeur ou autre) dans le session, vous n'avez donc pas besoin de travailler avec l'autre contrôleur. L'avantage serait que la session peut être accédée plus facilement et c'est l'approche la plus courante.

+0

Si quelqu'un downvotes, au moins dire pourquoi ... – DrColossos

0

Exemple avec session:

class SomeClass extends Controller { 

function __construct() 
{ 
    parent::Controller(); 
    $this->is_logged_in(); 
} 

function is_logged_in() 
{ 

    $is_logged_in = $this->session->userdata('is_logged_in'); 
    if(!isset($is_logged_in) || $is_logged_in != TRUE) 
    { 
     redirect('login'); 
    } 
} 
Questions connexes