我一直在使用数据库的会话测试 codeigniter 的功能,每当我注销(使用 sess_destroy())时,我都会收到以下通知:
A PHP Error was encountered
Severity: Notice
Message: Undefined index: session_id
Filename: libraries/Session.php
Line Number: 272
A PHP Error was encountered
Severity: Notice
Message: Undefined index: ip_address
Filename: libraries/Session.php
Line Number: 272
A PHP Error was encountered
Severity: Notice
Message: Undefined index: user_agent
Filename: libraries/Session.php
Line Number: 272
A PHP Error was encountered
Severity: Notice
Message: Undefined index: last_activity
Filename: libraries/Session.php
Line Number: 272
A PHP Error was encountered
Severity: Notice
Message: Undefined index: session_id
Filename: libraries/Session.php
Line Number: 288
A PHP Error was encountered
Severity: Notice
Message: Undefined index: last_activity
Filename: libraries/Session.php
Line Number: 289
我需要做什么来解决这个问题? (我知道我可以关闭错误报告等,但我更感兴趣的是为什么会发生这种情况以及如何修复它)。
我用它来创建表:
CREATE TABLE IF NOT EXISTS `ci_sessions` (
session_id varchar(40) DEFAULT '0' NOT NULL,
ip_address varchar(45) DEFAULT '0' NOT NULL,
user_agent varchar(120) NOT NULL,
last_activity int(10) unsigned DEFAULT 0 NOT NULL,
user_data text NOT NULL,
PRIMARY KEY (session_id),
KEY `last_activity_idx` (`last_activity`)
);
会话库是自动加载的。
随着 2.1.3 版本的发布,这导致了您的问题:
修复了一个错误 (#1314) - 会话库方法 sess_destroy() 没有销毁用户数据数组。
$this->tank_auth->logout() 包含函数 sess_destroy();
因此,调用此函数后,您无法在 $this->_show_message() 中使用 set_flashdata() 。
您需要做的是创建一个新会话。您的注销方法在 auth.php 中应如下所示:
/**
* Logout user
*
* @return void
*/
function logout() {
$this->tank_auth->logout(); // Destroys session
$this->session->sess_create();
$this->_show_message($this->lang->line('auth_message_logged_out'));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)