このフォーラムの投稿 ( http://codeigniter.com/forums/viewthread/138823/ )に従って Ajax 呼び出しで set_flashdata() の問題に対処するために CI_Session クラスを拡張しましたが、何らかの理由で私の 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');