我正在使用 codeigniter。我的 session 有一个奇怪的问题。我在用户登录时设置 session 并将其重定向到新页面。我观察到,有时会设置 session ,有时则未设置。我尝试过使用 codeigniter session 和 native session 以及 sess_use_database 变量 TRUE 和 FALSE。我不知道发生了什么。
配置文件如下所示:
$config['sess_expiration'] = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = TRUE;
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 7200;
最佳答案
当 session 数据在数据库中可用时,每次在用户的 cookie 中找到有效 session 时,都会执行数据库查询来匹配它。如果 session ID 不匹配,则 session 将被销毁。 session ID 永远无法更新,只能在创建新 session 时生成。
为了存储 session ,您必须首先为此创建一个数据库表。
在数据库中创建它:
CREATE TABLE IF NOT EXISTS `ci_sessions` (
session_id varchar(40) DEFAULT '0' NOT NULL,
ip_address varchar(16) 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`)
);
何时,进行配置并更改:
$config['sess_use_database'] = TRUE;
我更喜欢将 session 保存在数据库中,因为它更安全并且工作不会出现问题。
关于Codeigniter session 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10097952/