2011-11-13 32 views
0

我正在使用codeigniter框架創建Web應用程序,我正在使用2.0.3版本。 我讓ajax請求不時更新頁面,並獲取通知。 我訪問過的笨論壇和詢問笨會話和Ajax的問題​​,並發現此代碼段時,我使用的,並保存在圖書館和類「My_session.php」Codeigniter將用戶登出

class MY_Session extends CI_Session { 

    /** 
    * Update an existing session 
    * 
    * @access public 
    * @return void 
    */ 
    function sess_update() { 
     // skip the session update if this is an AJAX call! This is a bug in CI; see: 
     // https://github.com/EllisLab/CodeIgniter/issues/154 
     // http://codeigniter.com/forums/viewthread/102456/P15 
     if (!($this->CI->input->is_ajax_request())) { 
      parent::sess_update(); 
     } 
    } 
} 

但自從我加入這個代碼我無法保持記錄超過五分鐘而未被註銷,或者有時根本無法登錄。 有沒有人有類似的經歷?

+0

是你的服務器上的時間設置好嗎? –

+0

@LastRoseStudios時間設置正確 – MrFoh

+0

您是否在會話中使用數據庫? – tgriesser

回答

0

如果你想保持登錄狀態時間越長你已經設置sess_expiration更多然後五分鐘,你的application/config/config.php文件

+0

它的設置7200秒,兩小時 – MrFoh

0

當你評估is_ajax_request會發生什麼()?在該代碼片段中添加:

echo 'AJAX: ' . $this->CI->input->is_ajax_request(); exit; 

查看if語句是否正常工作。它可能會返回false並每次更新會話。只是一個快速啓動:)

+0

我現在試試吧 – MrFoh

+0

它返回「AJAX」 – MrFoh

+0

檢查AJAX是否在框架的某處,如果不是,那麼你需要添加這些檢查,這些檢查位於您添加的lib的線程中,或者在lib的頂部定義爲定義的const,如下所示:define('AJAX',isset($ _ SERVER ['HTTP_X_REQUESTED_WITH']) && strtolower($ _ SERVER ['HTTP_X_REQUESTED_WITH'])=='xmlhttprequest');' –