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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

避免發(fā)送ajax請(qǐng)求時(shí)會(huì)話超時(shí)重置

避免發(fā)送ajax請(qǐng)求時(shí)會(huì)話超時(shí)重置

PHP
慕尼黑5688855 2023-11-03 10:55:10
如果 post 請(qǐng)求通過 ajax 發(fā)送到特定的控制器功能,是否可以告訴 codeigniter 跳過會(huì)話超時(shí)重置。我在用戶登錄儀表板內(nèi)頻繁進(jìn)行 ajax 調(diào)用來檢查某些內(nèi)容,但這些調(diào)用使會(huì)話保持活動(dòng)狀態(tài),因此即使用戶在 10 分鐘(sess_expiration 時(shí)間)內(nèi)保持不活動(dòng)狀態(tài),會(huì)話也不會(huì)被終止,并且它們?nèi)匀挥肋h(yuǎn)保持登錄狀態(tài)。
查看完整描述

1 回答

?
莫回?zé)o

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

如果(且僅當(dāng))您的 Ajax 調(diào)用完全與會(huì)話無關(guān)(即,不需要登錄即可運(yùn)行,不需要來自用戶的任何會(huì)話數(shù)據(jù)等),您可以提供 Ajax 請(qǐng)求來自單獨(dú)的特定于 ajax 的控制器,然后在使用該特定控制器時(shí)禁止會(huì)話庫自動(dòng)加載。


如果 ajax 調(diào)用需要登錄用戶,那么您就很不幸了。


但是,如果您滿足這些條件,請(qǐng)找到該$autoload['libraries]部分application/config/autoload.php并使用這個(gè)骯臟的技巧:


// Here, an array with the libraries you want/need to be loaded on every controller

$autoload['libraries'] = array('form_validation');


// Dirty hack to avoid loading the session library on controllers that don't use session data and don't require the user to have an active session

$CI =& get_instance();

// uncomment the one that fits you better

// Alternative 1: you only have a single controller that doesn't need the session library

// if ($CI->router->fetch_class() != 'dmz') array_push($autoload['libraries'], 'session');

// END alternative 1


// Alternative 2: you have more than one controller that doesn't need the session library

// if (array_search($CI->router->fetch_class(), array('dmz', 'moredmz')) === false) array_push($autoload['libraries'], 'session');

// END alternative 2

在上面的代碼中,dmz和moredmz是我的兩個(gè)虛構(gòu)的控制器名稱,需要不加載會(huì)話庫。每當(dāng)不使用這些庫時(shí),session庫就會(huì)被推入自動(dòng)加載狀態(tài)并因此加載。否則,該session庫將被忽略。


實(shí)際上,我在我的一個(gè)站點(diǎn)上運(yùn)行了此程序,以便允許負(fù)載均衡器運(yùn)行運(yùn)行狀況檢查(在每個(gè)應(yīng)用程序服務(wù)器上每 5 秒一次,來自主負(fù)載均衡器及其備份),并用無用的數(shù)據(jù)填充我的會(huì)話表并且像魅力一樣發(fā)揮作用。


不確定您使用的 CI 版本,但上面的代碼是在 CI 3.1.11 上測(cè)試的。


現(xiàn)在,當(dāng)您聲明 Ajax 調(diào)用需要會(huì)話驅(qū)動(dòng)程序時(shí),解決此問題的唯一方法就是對(duì)會(huì)話驅(qū)動(dòng)程序本身進(jìn)行一些修改。在3.1.11中,會(huì)話驅(qū)動(dòng)程序位于其中,system/libraries/Session/Session.php您需要更改的部分是構(gòu)造函數(shù)方法的最后部分(從第160行開始查看)。對(duì)于此示例,我假設(shè)您的 Ajax 調(diào)用由名為“Ajax”的特定控制器處理


// This is from line 160 onwards

elseif (isset($_COOKIE[$this->_config['cookie_name']]) && $_COOKIE[$this->_config['cookie_name']] === session_id())

        {

            $CI =& get_instance();

            $new_validity = ($CI->router->fetch_class() !== 'ajax') ? time() + $this->_config['cookie_lifetime'] : $_SESSION['__ci_last_regenerate'] + $this->_config['cookie_lifetime'];


            setcookie(

                $this->_config['cookie_name'],

                session_id(),

                (empty($this->_config['cookie_lifetime']) ? 0 : $new_validity),

                $this->_config['cookie_path'],

                $this->_config['cookie_domain'],

                $this->_config['cookie_secure'],

                TRUE

            );

        }


        $this->_ci_init_vars();


        log_message('info', "Session: Class initialized using '".$this->_driver."' driver.");

簡(jiǎn)而言之,這個(gè)示例(尚未測(cè)試,因此請(qǐng)?jiān)诓渴鹬斑M(jìn)行測(cè)試,可能有一兩個(gè)拼寫錯(cuò)誤)將首先實(shí)例化 CI 核心并從路由器獲取控制器名稱。如果它是常規(guī)控制器,它將確定新的 cookie 有效性為“現(xiàn)在加上配置中的 cookie 有效性”。如果是ajax控制器,則cookie有效性將與當(dāng)前有效性相同(上次再生時(shí)間加上cookie有效性..必須重申,因?yàn)槿\(yùn)算符需要它)


然后,setcookie根據(jù)該值進(jìn)行修改以使用預(yù)先計(jì)算的 cookie 有效性_config['cookie_lifetime']。


查看完整回答
反對(duì) 回復(fù) 2023-11-03
  • 1 回答
  • 0 關(guān)注
  • 207 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)