我的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');
}
}
}
当我尝试加载模型
时,这个问题即将来临答案 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 {