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 相关文章推荐
example1.php
Oct 09 PHP
php xfocus防注入资料
Apr 27 PHP
一步一步学习PHP(2)――PHP类型
Feb 15 PHP
Windows下XDebug 手工配置与使用说明
Jul 11 PHP
php 文件缓存函数
Oct 08 PHP
深入PHP中慎用双等于(==)的详解
Jun 06 PHP
THINKPHP支持YAML配置文件的设置方法
Mar 17 PHP
php实现基于pdo的事务处理方法示例
Jul 21 PHP
php实现socket推送技术的示例
Dec 20 PHP
php输出反斜杠的实例方法
Sep 19 PHP
PHP反射原理与用法深入分析
Sep 28 PHP
PHP isset empty函数相关面试题及解析
Dec 11 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
PHP 数字左侧自动补0
2008/03/31 PHP
PHP Session变量不能传送到下一页的解决方法
2009/11/27 PHP
PHP对MongoDB[NoSQL]数据库的操作
2013/03/01 PHP
php+xml编程之xpath的应用实例
2015/01/24 PHP
php发送邮件的问题详解
2015/06/22 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
2016/02/23 PHP
PHP token验证生成原理实例分析
2019/06/05 PHP
DOM Scripting中的图片切换[兼容Firefox]
2010/06/12 Javascript
js取值中form.all和不加all的区别介绍
2014/01/20 Javascript
IE、FF浏览器下修改标签透明度
2014/01/28 Javascript
js的toUpperCase方法用法实例
2015/01/27 Javascript
JavaScript实现的浮动层框架用法实例分析
2015/10/10 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
微信小程序利用co处理异步流程的方法教程
2017/05/20 Javascript
如何将你的AngularJS1.x应用迁移至React的方法
2018/02/01 Javascript
详解webpack 热更新优化
2018/09/13 Javascript
Phaser.js实现简单的跑酷游戏附源码下载
2018/10/26 Javascript
微信小程序实现的五星评价功能示例
2019/04/25 Javascript
layui问题之自动滚动二级iframe页面到指定位置的方法
2019/09/18 Javascript
vue-calendar-component 封装多日期选择组件的实例代码
2020/12/04 Vue.js
python判断端口是否打开的实现代码
2013/02/10 Python
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
2014/06/04 Python
python获取引用对象的个数方式
2019/12/20 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
2020/04/16 Python
python 图像插值 最近邻、双线性、双三次实例
2020/07/05 Python
End Clothing美国站:英国男士潮牌商城
2018/04/20 全球购物
英国电子产品购物网站:TobyDeals
2018/07/30 全球购物
联想C++笔试题
2012/06/13 面试题
JSP和EJB可以共享HttpSession么?EJB里面可以改变session里面的内容
2013/06/05 面试题
GWT (Google Web Toolkit)有哪些主要的原件组成?
2015/06/08 面试题
简单的大学生自我鉴定
2014/02/18 职场文书
2014年秋季开学典礼致辞
2014/08/02 职场文书
优秀员工自荐书
2015/03/06 职场文书
领导干部学习三严三实心得体会
2016/01/05 职场文书
合同范本之电脑出租
2019/08/13 职场文书
CSS基础详解
2021/10/16 HTML / CSS