📜  如何在 codeigniter 中设置会话超时 (1)

📅  最后修改于: 2023-12-03 15:38:14.329000             🧑  作者: Mango

如何在 CodeIgniter 中设置会话超时

在 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 参数。