我在个人CMS上使用codeigniter缓存。问题是,如果用户已登录管理,我不想显示缓存页面。
在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
由于输出在控制器和会话需要CI控制器之前运行,唯一的东西我可以想到它在数据库和登记上的禁用会话存储,我不想这样做。
有人可以就此给我一些启示吗?我仍然无法找到解决方案!
谢谢!
答案 0 :(得分:0)
试试这个:
@$SESS = & load_class('Session', 'libraries/Session');
@是为了防止它抱怨“会话已经开始”。请注意:这是CI3。原始Output类的代码状态(第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.