gpt4 book ai didi

mysql - Codeigniter 不会在数据库中保存 session

转载 作者:行者123 更新时间:2023-11-29 21:22:18 24 4
gpt4 key购买 nike

我正在尝试将 session 保存在数据库上,但没有成功。我已经设置了 CI 配置、自动加载,但没有任何效果。

在我的 Controller 上

$session_data = array(
'session_id' => session_id(),
'ip_address' => $this->input->ip_address(),
'user_agent' => $this->input->user_agent(),
'last_activity' => substr($_SERVER['HTTP_USER_AGENT'], 0, 120),
'user_data' => 'logged'
);

$this->session->set_userdata('ci_sessions', $session_data);

自动加载

$autoload['libraries'] = array('database','session');
$autoload['drivers'] = array('session');

配置

$config['encryption_key'] = 'wqf35MV437ytPyGweGHH24775zK8u7uD';
$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_sessions';
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_expiration'] = 8640;
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_expire_on_close'] = TRUE;
$config['sess_save_path'] = NULL;
$config['sess_match_ip'] = TRUE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

以及MYSQL上默认的ci_session表

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')
);

最佳答案

您已将 CI2 session 配置与 CI3 session 配置混合在一起。

session Database User Guide CI3

如果您使用 CodeIgniter 3 如果您想将 session 保存到数据库

改变

$config['sess_driver'] = 'files';
$config['sess_save_path'] = NULL;

$config['sess_driver'] = 'database';

// This will be your table name for session

$config['sess_save_path'] = 'ci_sessions';
$config['sess_expiration'] = 7200;
$config['sess_match_ip'] = TRUE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

还有

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,
KEY `ci_sessions_timestamp` (`timestamp`)
);

然后我会自动加载 session

$autoload['libraries'] = array('session');

关于mysql - Codeigniter 不会在数据库中保存 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35664826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com