Отключение кеша Codeigniter для зарегистрированных пользователей

1

Я использую кеш-код на моей личной CMS. Проблема в том, что я не хочу показывать кешированные страницы, если пользователь зарегистрировал его в администрации.

Видел этот урок в google: http://www.badpenguin.org/codeigniter-cache-disable

class MY_Output extends CI_Output {

    function _display_cache(&$CFG, &$URI)
    {
        /* Simple Test for Ip Address */
        if ($_SERVER['REMOTE_ADDR'] == NOCACHE_IP ) 
        {
            return FALSE;
        }
        /* Simple Test for a cookie value */
        if ( (isset($_COOKIE['nocache'])) && ( $_COOKIE['nocache'] > 0 ) )
        {
            return FALSE;
        }
        /* Call the parent function */
        return parent::_display_cache($CFG,$URI);
    }
}

Проблема в том, что сеанс это на базе данных (ci_sessions), и я не могу получить доступ к нему внутри MY_Output.

с помощью:

$CI =& get_instance();
$CI->session->userdata('userID')

дай мне:

Class 'CI_Controller' not found in

Поскольку вывод выполняется до контроллера, а для сеанса требуется CIcontroller, единственное, что я могу думать о его отключении хранения сеанса в базе данных и описи, и я не хочу делать это rs.

Кто-то может рассказать мне об этом? я до сих пор не могу найти решение этого!

Благодарю!

  • 0
    Хм, интересно ... Если ответ ниже не помогает - Вместо расширения классов CI, вот одна интересная идея: goobbe.com/questions/1927427/… - По сути, вы можете сделать что-то вроде контроллера (ов) предварительного просмотра. для администратора, где выходные данные не будут кэшироваться, поэтому он может предварительно просмотреть сделанные изменения. Это не идеальное решение, но стоит попробовать ...
  • 0
    поскольку кэш загружается до контроллера, это не сработает.
Показать ещё 1 комментарий
Теги:
codeigniter
caching

1 ответ

0

Попробуй это:

@$SESS = & load_class('Session', 'libraries/Session');

@Существует, чтобы не допустить, чтобы он ныл о том, что "сеанс уже запущен". Обратите внимание: это для CI3. Код для исходных состояний класса вывода (строки 407-409):

// Note:  We use load_class() because we can't use $CI =& get_instance()
// since this function is sometimes called by the caching mechanism,
// which happens before the CI super object is available.
  • 0
    С @, дает мне пустую страницу. И без него та же ошибка, класс 'CI_Controller' не найден в
  • 0
    Php5 и CI 2.1
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню