【发布时间】:2012-09-10 20:23:59
【问题描述】:
我已扩展 CI_Session 类,以便根据此论坛帖子 (http://codeigniter.com/forums/viewthread/138823/) 处理 Ajax 调用的 set_flashdata() 问题,但由于某种原因,我的 sess_update() 函数从未被调用。我在我的扩展构造函数中调用了 log_message(),它确实被调用了。
为什么当我执行 $this->session->sess_update() 时没有调用我的 sess_update() 函数?
会话库已添加到 autoload.php 配置文件中,我的扩展库位于 /application/libraries。
class MY_Session extends CI_Session
{
public function MY_Session()
{
log_message('debug', 'MY_Session construct');
parent::__construct();
}
/**
* Update an existing session
*
* @access public
* @return void
*/
function sess_update()
{
// skip the session update if this is an AJAX call!
if ( !IS_AJAX )
{
log_message('debug', 'NOT an AJAX request');
parent::sess_update();
} else {
log_message('debug', 'AJAX request');
}
}
}
我也将它添加到我的 constants.php 文件中
// Define Ajax Request
define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
【问题讨论】:
标签: ajax session codeigniter-2