2012-10-21 7 views
0

La principale chose que je veux résoudre est de vérifier la session de l'utilisateur lorsque quelqu'un veut accéder au panneau d'administration. J'ai créé la classe MY_Controller et l'ai placée dans la bibliothèque.MY_Controller classe non trouvée

class MY_Controller extends CI_Session { 

public $logged_in = FALSE; 

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

public function is_logged_in() 
{ 
    $logged = $this->userdata('user_id'); 
    $this->logged_in = ($logged) ? TRUE : FALSE; 
} 

function sessdestroy() { 

    $this->session->sess_destroy(); 

} 

} 

Ceci est ma page de connexion. J'ai créé un bouton qui redirige vers le panneau d'administration (tableau de bord) juste pour tester si la vérification de session fonctionne.

class Login extends CI_Controller { 

function __construct() { 

    parent::__construct(); 

} 

public function index() { 

    $this->load->view('view_login'); 

    if(isset($_POST['redirect'])) { 

    redirect('admin'); 

    } 
} 


} 

Ceci est le contrôleur d'administration où je vérifie si la session utilisateur existe.

class Admin extends MY_Controller { 

function construct() { 

    parent::__construct(); 

} 


function index() { 

    if($this->is_logged_in()) { 

    $this->dodadi_destinacija(); 

    } 

    else redirect('login'); 

} 

} 

MAIS j'ai cette erreur.

Fatal error: Class 'MY_Controller' not found in C:\wamp\www\UserPanel\application\controllers\admin.php on line 3 

Pouvez-vous me dire vos pensées au sujet de ma solution de codage pour le problème donné :) s'il vous plaît

Répondre

1

Codeigniter introduit un nouveau dossier appelé core où les bibliothèques qui ne nécessitent pas une vie de chargement. La classe CI_Controller d'origine en fait partie. Si vous voulez que l'automagick prenne en charge votre fichier MY_Controller.php, placez-le également sous application/core.

En cas de doute, vérifiez la version originale de la classe étendue sous le répertoire system et inversez-la sous application.

(également dans votre premier exemple de code, je pense que vous vouliez dire d'étendre CI_Controller non CI_Session)

7
  1. Vous devez étendre la classe CI_Controller au lieu de CI_Session
  2. Vous devez placer MY_Controller sous application/core/ dossier au lieu de application/library
1

J'ai eu cette erreur sur un projet pendant que j'apprenais CodeIgniter. Ma solution était, pour utiliser votre projet comme exemple, require_once('MY_Controller'); en haut de mon nouveau contrôleur.

De cette façon, je n'ai pas eu à déplacer mon fichier vers le noyau et je pouvais le garder dans mon répertoire de contrôleurs.