📅  最后修改于: 2023-12-03 15:38:14.329000             🧑  作者: Mango
在 CodeIgniter 中,可以通过使用 PHP 自带的 session
函数来实现会话管理。而会话超时是指在一定时间内没有进行活动时,会话自动失效。本文将介绍如何在 CodeIgniter 中设置会话超时。
首先,需要打开 CodeIgniter 的配置文件 application/config/config.php
,找到以下代码行:
$config['sess_driver'] = 'files';
将其修改为:
$config['sess_driver'] = 'database';
$config['sess_save_path'] = 'ci_sessions'; // 数据库表名
$config['sess_expiration'] = 7200; // 会话超时时间,单位是秒
这里使用了数据库来存储会话数据,并将超时时间设置为 7200 秒(2 小时)。另外,需要在数据库中创建一个表来存储会话数据,可以使用以下 SQL 语句:
CREATE TABLE IF NOT EXISTS `ci_sessions` (
`id` varchar(40) NOT NULL,
`ip_address` varchar(45) NOT NULL,
`timestamp` int(10) unsigned NOT NULL DEFAULT '0',
`data` blob NOT NULL,
PRIMARY KEY (`id`),
KEY `ci_sessions_timestamp` (`timestamp`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
接下来,在控制器中启用会话:
class Welcome extends CI_Controller {
public function index()
{
$this->load->library('session');
// 其他代码...
}
}
可以使用 set_userdata()
方法来设置会话数据:
$this->session->set_userdata('name', 'John');
可以使用 userdata()
方法来获取会话数据:
$name = $this->session->userdata('name');
可以使用 unset_userdata()
方法来销毁会话数据:
$this->session->unset_userdata('name');
或者使用 sess_destroy()
方法销毁整个会话:
$this->session->sess_destroy();
到此,会话超时的设置就完成了。要注意的是,以上设置只在 CodeIgniter 的当前应用程序中生效,并不能全局影响整个网站。如果需要全局设置会话超时,可以在 PHP 的配置文件中修改 session.gc_maxlifetime
参数。