第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Codeigniter會話因Ajax調用而出錯

Codeigniter會話因Ajax調用而出錯

哆啦的時光機 2019-12-13 15:10:56
我的CodeIgniter應用程序使用會話庫并將數據保存到DB。我遇到了一些問題,在某個ajax調用之后創(chuàng)建空白會話。經過調查,似乎觸發(fā)了兩個同時進行的函數調用,需要進行會話驗證。一個會失敗,另一個會沒事。我能夠通過不讓它們同時啟動來解決此問題。但是我仍然不明白為什么它會失敗。它與更新用戶cookie的一次調用和使第二次調用無效的調用有關嗎?還是在讀取數據庫時以某種方式死亡?我稍微看了一下Session核心類,卻沒有找到任何線索。如果有人遇到相同的問題,我將不勝感激如何調試或引起問題的任何建議。謝謝!編輯:我最初說的是408狀態(tài)返回。那是無關的案件。這是并行觸發(fā)MyVar.refresh()的函數:function (event){    var self$ = this.a$;    var uid  = this.b$.val();    var tid  = this.c$.val();    var jqxhr = $.post('/controller1/index',{'uid':uid,'tid':tid,'action':true},function(re)    {        if(re.message != 'success')        {            MyVar.alert('<span class="msg_error sprite"></span>' + re.error);            MyVar.refresh();        }     },'json');    MyVar.refresh();    return stopDefault(event);};可能的解決方案:找到了這個:http : //codeigniter.com/forums/viewthread/102456/顯然,它不能與Ajax配合使用。一種解決方案是如果是ajax調用則禁止會話更新。唯一的問題是我們的網站主要是用Ajax構建的。另外,只需將sess_time_to_update降低到非常頻繁的水平,而ajax可以正常運行。瀏覽器也進行了刷新,并且沒有超時。不確定為什么ajax調用后會話ID是否已更改并且瀏覽器cookie從未更新過。
查看完整描述

3 回答

?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

嘗試這個


<?php

/**

 * ------------------------------------------------------------------------

 * CI Session Class Extension for AJAX calls.

 * ------------------------------------------------------------------------

 *

 * ====- Save as application/libraries/MY_Session.php -====

 */


class MY_Session extends CI_Session {


    // --------------------------------------------------------------------


    /**

     * sess_update()

     *

     * Do not update an existing session on ajax or xajax calls

     *

     * @access    public

     * @return    void

     */

    public function sess_update()

    {

        $CI = get_instance();


        if ( ! $CI->input->is_ajax_request())

        {

            parent::sess_update();

        }

    }


}


// ------------------------------------------------------------------------

/* End of file MY_Session.php */

/* Location: ./application/libraries/MY_Session.php */

問題出在會話類的sess_update函數中,該函數在X秒后生成一個新的session_id。每個頁面都有一個session_id,如果session_id在進行ajax調用之前過期,則該調用將失敗。


在/ application / libraries /中創(chuàng)建一個名稱為MY_Session(或您設置的前綴)的php文件,將此代碼粘貼在那里。該函數將覆蓋會話類中的sess_update函數,檢查每個請求是否由ajax發(fā)出,跳過sess_update函數。


將sess_expiration設置為更高的值是一個壞主意。這是一項安全功能,可防止您受到會話干擾


PD:我的英語不太流利,如果您聽不懂,請告訴我。



查看完整回答
反對 回復 2019-12-14
?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

在將其合并到穩(wěn)定分支之前,解決方案(最終?。┦菍reson的提交245bef5與數據庫模式結合使用:


CREATE TABLE IF NOT EXISTS  `ci_sessions` (

    session_id varchar(40) DEFAULT '0' NOT NULL,

    ip_address varchar(45) DEFAULT '0' NOT NULL,

    user_agent varchar(120) NOT NULL,

    last_activity int(10) unsigned DEFAULT 0 NOT NULL,

    user_data text NOT NULL,

    prevent_update int(10) DEFAULT NULL,

    PRIMARY KEY (session_id),

    KEY `last_activity_idx` (`last_activity`)

);

有關更多信息,請從上至下閱讀拉1283注釋。



查看完整回答
反對 回復 2019-12-14
  • 3 回答
  • 0 關注
  • 404 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號