gpt4 book ai didi

javascript - CodeIgniter 在 AJAX 调用中一段时间​​后丢失 session

转载 作者:行者123 更新时间:2023-11-29 18:27:43 26 4
gpt4 key购买 nike

我有一个简单的长轮询情况。

jQuery

function poll(){
$.get(url,{},function(data){ poll(); });
}

PHP (为简洁起见删除了计时内容)

function responds_to_poll()
{
if( ! $this->current_user()->is_logged_in())
{
redirect('auth/login');
}

echo json_encode("Whats up?");
}

我会观察 Firebug 5-10 分钟,它工作正常,但最终它会说 GET (302 Redirect) 并且响应将包含我的 auth/login 中的 html。 php 文件。

session 是数据库驱动的,使用本地 CI_Session 类。它们会在 2 小时后过期,而不是 5-10 分钟。我已经尝试了其他问题中看到的一些事情,但到目前为止没有任何效果。我错过了什么?

最佳答案

这个 hack 解决了我的问题。当请求来自 XHR 请求时,它只是取消 sess_update 调用。

在您的 system/application/config/constants.php 中定义它:

define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');

然后,使用以下内容创建 system/application/libraries/My_Session.php:

class MY_Session extends CI_Session {
public function __construct($params = array())
{
parent::CI_Session($params);
}

public function sess_update()
{
if ( IS_AJAX )
{
parent::sess_update();
}
}
}

黑客攻击基于 this thread .仅在 CI 1.7.2、YMMV 上测试。

问题是我很快就收到了 ajax 请求。周期性地,一个 sess_update 被其中之一触发。而且,有时,会同时出现第二个 ajax 请求。该请求将提供最近过期的 session key ,代码点火器将删除该 session 。

此修复程序仅允许对非 ajax 请求进行 session 更新。这有点麻烦,但它确实有效。

关于javascript - CodeIgniter 在 AJAX 调用中一段时间​​后丢失 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11460209/

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