Yii净化器CHtmlPurifier用法示例(过滤不良代码)


Posted in PHP onJuly 15, 2016

本文实例讲述了Yii净化器CHtmlPurifier用法。分享给大家供大家参考,具体如下:

1. 在控制器中使用:

public function actionCreate()
{
  $model=new News;
  $purifier = new CHtmlPurifier();
  $purifier->options = array(
    'URI.AllowedSchemes'=>array(
              'http' => true,
              'https' => true,
    ),
       'HTML.Allowed'=>'div',
  );
  if(isset($_POST['News']))
  {
    $model->attributes=$_POST['News'];
    $model->attributes['content'] = $purifier->purify($model->attributes['content']);
    if($model->save())
      $this->redirect(array('view','id'=>$model->id));
  }
}

2. 在模型中的使用:

protected function beforeSave()
{
  $purifier = new CHtmlPurifier();
  $purifier->options = array(
    'URI.AllowedSchemes'=>array(
              'http' => true,
              'https' => true,
    ),
       'HTML.Allowed'=>'div',
  );
  if(parent::beforeSave()){
    if($this->isNewRecord){
      $this->create_data = date('y-m-d H:m:s');
      $this->content = $purifier->purify($this->content);
    }
    return true;
  }else{
    return false;
  }
}

3. 在过滤器中的使用:

public function filters()
{
  return array(
    'accessControl', // perform access control for CRUD operations
    'postOnly + delete', // we only allow deletion via POST request
    'purifier + create', //载入插入页面时进行些过滤操作
  );
}
public function filterPurifier($filterChain){
  $purifier = new CHtmlPurifier();
  $purifier->options = array(
    'URI.AllowedSchemes'=>array(
              'http' => true,
              'https' => true,
    ),
       'HTML.Allowed'=>'div',
  );
  if(isset($_POST['news']){
    $_POST['news']['content'] = $purify($_POST['news']['content']);
  }
    $filterChain->run();
}

4. 在视图中的使用:

<?php $this->beginWidget('CHtmlPurifier'); ?>
...display user-entered content here...
<?php $this->endWidget(); ?>

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
phpBB BBcode处理的漏洞
Oct 09 PHP
PHP4实际应用经验篇(9)
Oct 09 PHP
小文件php+SQLite存储方案
Sep 04 PHP
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
Apr 13 PHP
关于php正则匹配汉字的方法介绍
Apr 25 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
Jun 24 PHP
php多用户读写文件冲突的解决办法
Nov 06 PHP
PHP获取php,mysql,apche的版本信息示例代码
Jan 16 PHP
一个图片地址分解程序(用于PHP小偷程序)
Aug 23 PHP
PHP基于SimpleXML生成和解析xml的方法示例
Jul 17 PHP
php session_decode函数用法讲解
May 26 PHP
Laravel框架源码解析之反射的使用详解
May 14 PHP
Yii列表定义与使用分页方法小结(3种方法)
Jul 15 #PHP
session 加入redis的实现代码
Jul 15 #PHP
Yii模型操作之criteria查找数据库的方法
Jul 15 #PHP
功能强大的PHP POST提交数据类
Jul 15 #PHP
Yii的Srbac插件用法详解
Jul 14 #PHP
Yii中srbac权限扩展模块工作原理与用法分析
Jul 14 #PHP
Yii视图操作之自定义分页实现方法
Jul 14 #PHP
You might like
Laravel5.1 框架响应基本用法实例分析
2020/01/04 PHP
一个JS翻页效果
2007/07/23 Javascript
JavaScript 事件对象的实现
2009/07/13 Javascript
基于Jquery的简单&amp;简陋Tabs插件代码
2010/02/09 Javascript
chrome原生方法之数组
2011/11/30 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
javascript使用正则表达式检测IP地址
2014/12/03 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
2015/08/07 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
2016/03/01 Javascript
jquery判断input值不为空的方法
2016/06/05 Javascript
Vue.js 父子组件通讯开发实例
2016/09/06 Javascript
canvas实现流星雨的背景效果
2017/01/13 Javascript
jQuery实现百度登录框的动态切换效果
2017/04/21 jQuery
详解如何使用webpack打包Vue工程
2017/05/27 Javascript
浅谈vue项目可以从哪些方面进行优化
2018/05/05 Javascript
JS获取浏览器地址栏的多个参数值的任意值实例代码
2018/07/24 Javascript
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
2019/05/21 Javascript
vue父子组件通信的高级用法示例
2019/08/29 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
2020/04/08 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
2020/05/10 Javascript
Python编程给numpy矩阵添加一列方法示例
2017/12/04 Python
Python实现嵌套列表去重方法示例
2017/12/28 Python
python3 对list中每个元素进行处理的方法
2018/06/29 Python
Python的几种主动结束程序方式
2019/11/22 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
python列表返回重复数据的下标
2020/02/10 Python
python中resample函数实现重采样和降采样代码
2020/02/25 Python
Python通过socketserver处理多个链接
2020/03/18 Python
python对批量WAV音频进行等长分割的方法实现
2020/09/25 Python
推荐10个HTML5响应式框架
2016/02/25 HTML / CSS
法国春天百货官网:Printemps.com
2020/06/29 全球购物
路由表示做什么用的?在linux环境中怎么来配置一条默认路由?
2013/06/07 面试题
酒店营销策划方案
2014/02/07 职场文书
公司委托书怎么写
2014/08/02 职场文书
闪闪红星观后感
2015/06/08 职场文书
股东协议书范本2016
2016/03/21 职场文书