CodeIgniter会话在一个控制器中可用,但在其他控制器中不可用

时间:2015-05-29 15:07:47

标签: php codeigniter

CodeIgniter会话在一个控制器中可用,但在其他控制器中不可用...

会话正在设置用户控制器

class User extends CI_Controller {
    // SEssion worked here 
    public function __construct()
    {
        parent::__construct();
        session_start();
    }

function setSess (){
       // database model call, Value comes from database
       $_SESSION['user'] = array ( 'isLoggedIn' => true,
        'id' => $userData[0]['id'],
        'username' => 'ABC',
        'email_address' => $userData[0]['email_address'],
         'country' => $userData[0]['country'],
        'lastLoggedin' => $lastLoginTime
                                            );
  // Redirect to profile
}
}

无法在

中收到
class Profile extends CI_Controller {

        public function __construct()
        {
            parent::__construct();
            session_start();
        }

        public function index() {}

        public function display() {
            ECHO "<PRE>";
            print_r($_SESSION);

            $data['title'] = 'Profile of '.$_SESSION['user']['username'];
            // Gives error here while echoing $_SESSION['user']['username']

        }
    }

我在这里缺少什么?有什么建议吗?

1 个答案:

答案 0 :(得分:0)

请勿使用session_start(),而是加载CodeIgniter会话库

在用户控制器中:

class User extends CI_Controller {
    public function __construct()
    {
        parent::__construct();
        if(!isset($this->session)) {
            $this->load->library('session'); # do not use 'session_start();'
        }
    }
    function setSess (){
       $_SESSION['user'] = array ( 'isLoggedIn' => true,
           'id' => $userData[0]['id'],
           'username' => 'ABC',
           'email_address' => $userData[0]['email_address'],
           'country' => $userData[0]['country'],
           'lastLoggedin' => $lastLoginTime
       );
    }
    ...
}

在Profile Controller中:

class Profile extends CI_Controller {
    public function __construct()
    {
        parent::__construct();
        if(!isset($this->session)) {
            $this->load->library('session');
        }
    }
    ...
}

还要确保您的配置文件设置正确。请按照CodeIgniter Sessions

中的说明进行操作