2013-11-21 27 views
0

嗨,我已與MY_Controller名稱的基本控制器,並具有以下代碼會話不是在笨的所有控制器可用

<?php 

class MY_Controller extends CI_Controller { 

    public 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'); 
     } 
    } 

} 
?> 

我的login.php控制器

class Login extends CI_Controller { 

    public function index() 
    { 
     $email = $this->input->post('email'); 
     $password = md5($this->input->post('password')); 

     $this->load->model('users'); 
     $record = $this->users->authenticate_user($email, $password); 

     if (count($record) && $record != false) { 
      foreach ($record as $user) { 
       $userdata = array(
        'is_logged_in' => true 
       ); 

      } 
      $this->session->set_userdata($userdata); 
      redirect('index'); 
     } 
     else 
     { 
      $this->load->view('login'); 
     } 
    } 

} 

和所有其他控制器都是這樣擴展的

class Index extends MY_Controller 
{ 
    function __construct(){ 
     parent::__construct(); 
    } 
} 

class Messenger extends MY_Controller 
{ 
    function __construct(){ 
     parent::__construct(); 
    } 
} 

但會話只在索引控制中可用奧勒。即使所有其他控制器還擴展了MY_Controller

任何人的幫助meee

回答

1

你在哪裏初始化會話庫?加載你的會話庫在autoload.php並嘗試。

$autoload['libraries'] = array('database', 'session'); //in autoload.php 

在config.php:

$config['encryption_key'] = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; //your key here 
0

把會話類到磁帶自動加載機的配置,在application/config/autoload.php

$autoload['libraries'] = array('session' /* , ... */); 

然後在每個控制器的自動可用:

$session_id = $this->session->userdata('session_id'); 

,您可以在每次登錄後(並且僅在!之後)初始化會話數據。

+0

即使這已經在autoloader.php中初始化 –