Php 如何在Codeigniter中控制会话

Php 如何在Codeigniter中控制会话,php,codeigniter,session,Php,Codeigniter,Session,我使用的是Codeigniter3,我试图只为特定允许的用户(我们服务的用户)生成会话 因为codeigniter 3正在为所有请求创建会话,所以存储在数据库中的会话数量增长如此之快。我希望尽可能减少会议次数 会话的配置如下所示 $config['sess_driver'] = 'database'; $config['sess_cookie_name'] = '_s'; $config['sess_expiration'] = 0; // $config['sess_save_path'] =

我使用的是
Codeigniter3
,我试图只为特定允许的用户(我们服务的用户)生成会话

因为codeigniter 3正在为所有请求创建会话,所以存储在数据库中的会话数量增长如此之快。我希望尽可能减少会议次数

会话的配置如下所示

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = '_s';
$config['sess_expiration'] = 0;
// $config['sess_save_path'] = NULL;
$config['sess_save_path'] = 'CiSessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 30000;
$config['sess_regenerate_destroy'] = FALSE;

我想在Codeigniter中这是不可能的 我唯一能想象的就是饼干的使用

意思是:

在登录页面上,您设置了一个类似cookie的

$this->load->helper("cookie");
$cookie = array(
    'name'   => 'isLoggedIn',
    'value'  => '1',
    'expire' => '7200',
    'path'   => '/'
);
$this->input->set_cookie($cookie);
在autoload.php中

仅当设置了cookie时才加载此库

$arrAutoloadLibraries = ["database","user_agent"];
if ($_COOKIE['isLoggedIn'] == 1)
{
    $arrAutoloadLibraries[] = "session";
}

$autoload['libraries'] = $arrAutoloadLibraries;
请注意,您面临一些逻辑问题(如果用户只是访问登录页面并在之后离开,会发生什么情况,登录尝试失败时会发生什么情况,等等) 所以你必须考虑这些可能性

我不喜欢这种方法,但正如我所说,这是我唯一想到的;)