codeigniter会话无法正常工作

时间:2018-06-13 07:00:39

标签: php codeigniter session

我的codeigniter会话有问题。我正在使用CodeIgniter-3.1.8。我在config中将autoload.php中的会话加载为

$autoload['libraries'] = array('database', 'session');

但它显示的错误如Unable to locate the specified class: Session.php

然后我从autoload.php中删除它并将其加载到控制器中。

public function __construct() {
    parent::__construct();
    $this->load->library('session');
}

并尝试在我的控制器中设置flashdata。但现在它显示的错误如Undefined property: controller::$session。我已经将 config.php 中的 encryption_key 和会话存储驱动程序设置为数据库。 这是我在控制器中的示例代码:

class Home extends CI_Controller {
    public function __construct() {
        parent::__construct();
        $this->load->library('session');
    }

    public function register() {
        $data = $this->input->post();
        $result = false;     //$this->Home_model->register($data);
        if($result){
            $this->session->set_flashdata('success', 'Registration successful');
            $this->session->set_flashdata('form', 'login');
        }
        else {
            $this->session->set_flashdata('failure', 'An error occured, please try again');
            $this->session->set_flashdata('form', 'register');
        }

     }
}

当我尝试加载模型

时,这个问题即将来临

2 个答案:

答案 0 :(得分:1)

需要在配置文件中进行一些更改。

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = sys_get_temp_dir();
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

CI迁移可能会遇到此问题。 确保模型名称正确声明为

class Name extends CI_Model { }

在CI 3中,第一个字母必须是大写。保存同名文件。

另一个原因是sess_save_path。给出应该解决此错误的正确路径

答案 1 :(得分:0)

如果您正在使用HHMVC,请

class Home extends MX_Controller {}

而不是

class Home extends CI_Controller {