处理升级到CodeIgniter 3的工作,并遇到会话类的一些问题。
我们被配置为将会话存储在数据库中。我们已经设置了适当的ci_sessions表,并在Config.php中这样做:
$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 600;
$config['sess_save_path'] = 'ci_sessions';尝试用$this->session->set_userdata($data);存储会话数据
使用上面的内容,我们得到一个错误,指示CI没有从"sess_save_path“变量读取表名:
您的SQL语法有错误;请检查与MySQL服务器版本对应的手册,以便在第1行使用接近'SET
last_activity= 1437070556,user_data=‘a:14:{s:\\“user_data\;s:0:\’的正确语法。 更新集last_activity= 1437070556,
如您所见,更新和SET之间缺少表名。
为了解决这个问题,我进入了Config.php并添加了旧的不推荐的设置表名的方法,您不应该再使用这个方法了:
$config['sess_table_name'] = 'ci_sessions';这样做更好,但我得到了一个新的错误:
发生数据库错误 错误编号: 1054 'where子句‘中未知列'session_id’ 更新
ci_sessionsSETlast_activity= 1437075587,user_data= 'a:14:{从示例中删除的会话数据}‘ 其中session_id=‘636c6c7389342a7a211e3e2c3c3f03’ 文件名:库/Session.php 线路号码: 306
怎么回事,我该怎么解决呢?为什么$config['sess_save_path'] = 'ci_sessions';不能工作?session_id字段是怎么回事?
编辑:
经过更多的测试,我得出结论:
$config['sess_save_path'] = 'ci_sessions';不起作用
$this->session->set_userdata($data);不起作用
$this->session->set_userdata('name', $data);不起作用
$_SESSION['name'] = $data工程
CI3文档是非常不准确,还是有其他问题?
编辑2:
新的附加问题:
$this->load->library('session');
$data = $_SESSION['data'];抛出Undefined variable: _SESSION。我最初的印象是,在任何给定的函数中,我必须先写到$_SESSION,然后才能从$_SESSION中读取
发布于 2015-07-16 20:46:20
代码发生了一些奇怪的事情。
根据用于CodeIgniter3的会话数据库配置文档,需要用以下结构初始化会话表:
CREATE TABLE IF NOT EXISTS `ci_sessions` (
`id` varchar(40) NOT NULL,
`ip_address` varchar(45) NOT NULL,
`timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
`data` blob NOT NULL,
PRIMARY KEY (id),
KEY `ci_sessions_timestamp` (`timestamp`)
);基于您的错误,session_id列不存在,这不是CodeIgniter3所使用的。您的代码是否仍然在加载CI2会话代码?我下载了最新版本的CI3,并在Session_database_driver::write()函数中进行了以下调用:
$insert_data = array(
'id' => $session_id,
'ip_address' => $_SERVER['REMOTE_ADDR'],
'timestamp' => time(),
'data' => ($this->_platform === 'postgre' ? base64_encode($session_data) : $session_data)
);如您所见,没有session_id列的跟踪。
发布于 2016-06-01 15:31:33
在将表单代码点火器2移动到3之后,我遇到了这个问题。我用CI3附带的新文件夹替换了"system“文件夹来解决这个问题。
发布于 2015-09-15 15:19:10
我也遇到了同样的问题,并通过删除系统文件夹并将其替换为CI3 zip中的原始文件夹来解决这个问题。由于升级,我以前重写了它,但是仍然有这个错误。
https://stackoverflow.com/questions/31463642
复制相似问题