首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >代码点火器2v会话数据丢失

代码点火器2v会话数据丢失
EN

Stack Overflow用户
提问于 2015-10-26 11:11:00
回答 2查看 125关注 0票数 1

我有个关于Codeigniter会话的问题。当我登录到我们的系统时,就会设置会话。在这个会话中,"user_id“也设置了。在很少重定向之后,我的"user_id“会话变量为null (没有值)。

然后,由于user_id的空值,它重定向到登录页面。为何会出现这种情况?

请参阅下面的config.php文件

代码语言:javascript
代码运行次数:0
运行
复制
$config['sess_cookie_name']     = 'ci_session';
$config['sess_expiration']      = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = FALSE;
$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']  = 300;
$config['cookie_prefix']    = "";
$config['cookie_domain']    = "";
$config['cookie_path']      = "/";
$config['cookie_secure']    = FALSE;
$config['csrf_protection'] = FALSE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;

请帮我解决这个问题。好了!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-26 11:21:14

替换

代码语言:javascript
代码运行次数:0
运行
复制
$config['sess_expiration']      = 7200;

使用

代码语言:javascript
代码运行次数:0
运行
复制
$config['sess_expiration']      = 0;

有关会话的更多信息,请阅读此此链接

票数 1
EN

Stack Overflow用户

发布于 2015-10-26 11:32:34

您没有提供太多关于您的应用程序的信息,但是如果在重定向之间有大量ajax请求,您可能会遇到一个典型的CI 2错误,即在会话轮转窗口期间,每当发出ajax请求时,就会出现一个有效重置用户会话的争用条件。

CodeIgniter将会话存储在由session_id字段索引的表中。这是一个唯一的标识符,它是在会话创建和旋转时随机生成的。每次请求后,session_id作为cookie发送到浏览器,并且覆盖存储在cookie中的任何session_id。当客户端和服务器之间在任何时候只发送一个请求时,该系统在正常运行期间运行良好。在正常操作期间,客户端和服务器之间将交换相同的cookie。在会话轮转时,服务器将向客户端发送一个新cookie,客户端将存储它,并在下一个请求时将新cookie重新发送回服务器。这也能正常工作。

当服务器在会话轮转期间接收两个同时请求时(同时被定义为在接收所有其他在轨请求之前发送给服务器的请求),这是不起作用的。

这里的链接彻底地解释了它,如果这是您的情况,那么您可以在那里找到修复。

这个问题之所以存在,是因为浏览器发出ajax请求的方式(或者至少是我们发出ajax请求的方式),以及CodeIgniter处理会话轮转的方式。

PS。它的代码点火器不是代码点火器:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33344291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档