Я использую кеш-код на моей личной 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.
Кто-то может рассказать мне об этом? я до сих пор не могу найти решение этого!
Благодарю!
Попробуй это:
@$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.