863天前2018-10-16 13:24:16 |    抢沙发  437 
在网站开发项目中,有时候会要求对全站进行非法关键词的过滤,当然你可以选择在生产环境进行过滤,nginx和apache都有模块支持的,但是那样过滤不够灵活,每次增减关键词都要进行编辑删除环境,那么在CI框架中如何来实现呢?请跟静心一起来看看吧。

CodeIgniter

最近网站访问量增大本来想启用缓存 结果发现启用了display_override钩子以后 居然无法使用页面缓存了。于是研究了半天终于找到解决方案分享给大家

首先是利用钩子 来写一个关键词过滤类

主要是第一步继承CI类

$this->CI =& get_instance();
$data=$this->CI->output->get_output();
并获取输出内容保存起来以备后面使用

然后就用自己的规则来对输出的内容进行非法词清理

清理完成以后就把清洗完后的输出内容再写回输出缓存中
$this->CI->output->set_output($data);
最后调用输出类里面的_displa方法来输出到浏览器
$this->CI->output->_display();
PS:注意一定要调用输出方法否则不会有任何输出,之前由于没有怎么看ci手册我就直接echo输出了,结果导致了页面静态缓存无法正常使用。调用_displa后就可以使用页面缓存了。


另外output的所有方法在控制器中可以直接使用但是记得在$this->load->view()以后使用否则是回去不到数据的

具体可以参考一下ci官方的output(输出类)说明文档

链接地址:http://codeigniter.org.cn/user_guide/libraries/output.html

这个还有一个小bug就是缓存文件过期好像不能使用了,我的解决方法是写一个shell脚本,定时对超时文件进行清理。具体怎么写这个shell脚本请看下一篇文章。

发表评论

暂无评论

登录

忘记密码 ?

切换登录

注册

扫一扫二维码分享