codeIgniter:登录后丢失会话数据

Sur*_*shi 5 php session codeigniter

在登录后的codeigniter中,我将所有数据存储到会话中并重定向到论坛控制器.但我失去了论坛控制器中的所有价值观.

当我尝试从会话中减少一些值后,它完美地工作.

现在我的问题是 - 为什么会这样?在codeIgniter中是否存在会话中存储的值的上限?

即使我尝试搜索我发现像

redirect('forum', 'refresh');
Run Code Online (Sandbox Code Playgroud)

但它没有用.我的项目已经开发了一半,所以我不能使用codeignter的"PHP Native Session class".

ajs*_*ort 7

默认情况下,CodeIgniter将会话数据存储在cookie中,其大小上限为4KB.如果您尝试在会话中存储超过4KB的数据,您将开始遇到问题.

最简单的解决方案可能是将会话详细信息存储在数据库中.该CodeIgniter的会议文件详细介绍了过程存储在数据库会话-这是建立一个表,并改变几个配置参数的问题.


Sur*_*shi 2

说明:默认情况下,CodeIgniter 将会话数据存储在 cookie 中,根据浏览器,cookie 的大小上限为 2KB-4KB。如果您尝试在会话中存储超过 4KB 的数据,您将开始遇到问题。

解决方案:最简单的解决方案是将会话详细信息存储在数据库中。CodeIgniter会话文档详细介绍了在数据库中存储会话的过程。只需设置一个表并更改几个配置参数即可。以下是您需要做的更改 -

更新配置文件(application/config/config.php)中的以下变量:

$config['sess_use_database'] = TRUE;
$config['sess_table_name']   = 'ci_sessions';
Run Code Online (Sandbox Code Playgroud)

创建了用于存储会话的新表-

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`)
);
Run Code Online (Sandbox Code Playgroud)

欲了解更多信息:http://goo.gl/YPllj0