2010-07-19 5 views
4

J'utilise le cadre CodeIgniter pour PHP. Certaines pages sont réservées à l'administrateur et se trouvent au Admin/*. Lorsque l'utilisateur se connecte, je stocke une valeur dans la session en tant que drapeau et la vérifie dans mon contrôleur pour tester si l'utilisateur est connecté ou non. J'ai écrit le code pour vérifier la session dans chaque méthode de mon contrôleur. Mais, alors j'ai réalisé que je ne voulais pas écrire la même ligne de code dans chaque méthode, car de nombreux problèmes sont créés du point de vue de la maintenabilité. Puis j'ai décidé de créer un contrôleur exclusif qui ne chargera que les vues Admin et donc dans son constructeur, je vérifie la valeur de la session. Existe-t-il une autre méthode en dehors de cette approche? Est-ce que je le fais bien? Ou tout autre mécanisme sécurisé est disponible dans CodeIgniter?Comment vérifier si l'utilisateur est connecté?

Répondre

4

Vous avez pris l'une des meilleures approches (à mon avis), il suffit d'étendre les autres contrôleurs d'administration à partir de ce contrôleur afin que vous puissiez avoir des contrôleurs spécialisés (admin, galerie d'admin, etc.). Si vous avez besoin d'aide, je serai ravi de vous aider.

+0

Great! Merci :) – TCM

+0

Hey Flakron, j'apprécie plus d'aide/conseil sur avec. Spécifiquement sur la façon de régler le contrôleur en premier lieu. Et puis comment obtenir l'autre contrôleur pour l'étendre tout en étendant CI_controller en même temps. – David

1

vous pouvez le faire dans votre méthode constructeur quelque chose comme ça,

function __construct { 
    parent::construct(); 
    /* Do you login check here */ 
} 
1

Par exemple:

class Admin extends Controller { 

function __construct() 
{ 
    parent::__construct(); 
    $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