0

このフォーラムの投稿 ( 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');
4

3 に答える 3

1

バージョン3だと思います。もしそうなら、MY_Session.phpを入れてください

libraries/Session/MY_Session.php

User_Guide は、ほとんどの質問に役立ちます。

于 2015-10-12T05:50:12.670 に答える
0

クラスを追加してapplication/core、それが機能するかどうかを確認します

于 2012-09-18T14:40:55.020 に答える
0

まず、モデル/コントローラー/ローダーの基本クラスなどを拡張する場合は、ハンドルを使用'MY_'してクラスを見つける必要があります。application/core

第二に、これはアイデアを与えることができます:

my_session.php

include_once(BASEPATH.'libraries/Session.php');

class MY_Session extends CI_Session{
      public function __construct(){
          parent::__construct(); 
          ....
      }
    ....
}

コントローラーで:

$this->load->library('MY_Session');
$this->my_session->set_userdata() // or sth
于 2012-09-19T07:37:45.610 に答える