2017-10-13 3 views
-1

J'essaie d'implémenter une section de base à laquelle seul l'utilisateur connecté peut accéder. J'overrided CI_Controller, comme suit:CodeIgniter ne redirige pas la propriété

//file created in application/core/MY_Controller.php 
class Auth_Controller extends CI_Controller { 

    function __construct(){ 
     parent::__construct(); 

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

     if ($this->session->userdata('user_logged') !== null){ 
      redirect(base_url() . 'dashboard'); 
      die(); 
     } else { 
      redirect(base_url() . 'auth/login'); 
      die(); 
     } 
    } 

Et je tends de Auth_Controller tous les contrôleurs qui ne sont disponibles que pour les utilisateurs de connexion, comme suit:

class Dashboard extends Auth_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function index() 
    { 
     $this->load->view('dashboardView'); 
    } 
} 

Mais après la connexion susccesful, pas redirigent à dashboardView.

Quelqu'un sait ce qui se passe réellement?

+0

Par "redirect pas dashboardView" Que voulez-vous dire exactement? Est-ce qu'il montre une page blanche? rediriger vers une autre page? –

+0

Si j'ai utilisé une autre vue, j'ai le même problème. Le navigateur affiche: "La page ne redirige pas correctement" – omixam

+0

Seule la première lettre du contrôleur doit être en majuscule sur le nom de fichier et le nom de la classe expliquée ici https://www.codeigniter.com/user_guide/general/styleguide.html# file-naming – user4419336

Répondre

1

Vous redirigez infiniment au contrôleur Dashboard dans cette partie du code:

if ($this->session->userdata('user_logged') !== null){ 
    redirect(base_url() . 'dashboard'); 
    die(); 
} 

Utilisez ce lieu (redirection vers le formulaire de connexion si l'utilisateur n'est pas connecté):

class Auth_controller extends CI_Controller { 

    function __construct(){ 
     parent::__construct(); 

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

     // If the user is not logged in 
     if ($this->session->userdata('user_logged') === null){ 
      // Redirect to http://yoursite/auth/login 
      // No need for the base_url function, redirect does it for you 
      redirect('auth/login'); 
      // You don't have to exit/die, redirect() already does that 
     } 
    } 
} 
+0

Devrait être $ this-> session-> userdata ('user_logged')! == null pour rediriger vers le tableau de bord, n'est-ce pas? – omixam

+0

Nous vérifions si l'utilisateur n'est pas connecté, si c'est le cas, nous redirigeons vers le tableau de bord, s'il est déjà connecté, nous ne faisons rien et continuons d'exécuter le reste du contrôleur, vérifiez la réponse mise à jour. –

+1

Seule la première lettre du contrôleur doit être en majuscule sur le nom de fichier et de la classe expliqué ici https://www.codeigniter.com/user_guide/general/styleguide.html#file-naming – user4419336

0

Avis

  1. Si je vérifie l'hypothèse nulle, wi ll utilise comme ceci != null. MAIS dans CI c'est une meilleure option pour vérifier empty() plutôt null.
  2. Si j'utilise redirect() utilisera comme ça redirect('dashboard');

code sera

if (!empty($this->session->userdata('user_logged'))) { 
    redirect('dashboard'); 
else { 
    redirect('auth/login'); 
} 

Assurez-vous que votre site se charge sans index.php dans l'URL. Si aucune recherche de .htaccess sur votre site.