簡體   English   中英

會話並非在codeigniter中的所有控制器中都可用

[英]session is not available in all controllers in codeigniter

嗨,我使基本控制器的名稱為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

AnyOne幫助

您在哪里初始化了會話庫? 將會話庫autoload.phpautoload.php然后嘗試。

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

在config.php中:

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

將會話類放入application/config/autoload.php的自動加載器配置中:

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

然后在每個控制器中自動可用:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM