Codeigniter session 问题

标签 codeigniter session

我正在使用 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/

相关文章:

php - 条件字符串中包含符号的 Codeigniter 查询

javascript - 如何在codeigniter中将2个或更多数据传递给ajax

codeigniter - fsockopen() : unable to connect to ssl://smtp. gmail.com:465

jsf - 渲染 View 错误 : java. lang.IllegalStateException:提交响应后无法创建 session

session - DNN 5.x 中的注销如何工作?

c# - 创建交互式登录 session

php - Codeigniter - 返回与特定位置关联的成员

php - Codeigniter 数据库错误编号 1048 值显示 NULL,即使它们不是 NULL

javascript - NodeJS session 认证

javascript - 使用 Javascript 存储 session 显示在 ASP.NET C# 中另一个页面的标签中