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 相关文章推荐
第二节 对象模型 [2]
Oct 09 PHP
新手学PHP之数据库操作详解及乱码解决!
Jan 02 PHP
PHP下用rmdir实现删除目录的三种方法小结
Apr 20 PHP
创建配置文件 用PHP写出自己的BLOG系统 2
Apr 12 PHP
优化PHP程序的方法小结
Feb 23 PHP
Codeigniter操作数据库表的优化写法总结
Jun 12 PHP
PHP中实现获取IP和地理位置类分享
Feb 10 PHP
Linux+Nginx+MySQL下配置论坛程序Discuz的基本教程
Dec 23 PHP
Laravel中间件实现原理详解
Oct 09 PHP
php基于闭包实现函数的自调用(递归)实例分析
Nov 11 PHP
利用PHP实现开心消消乐的算法示例
Oct 12 PHP
PHP基于redis计数器类定义与用法示例
Feb 08 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数组总结篇(一)
2008/09/30 PHP
PHP 遍历文件实现代码
2011/05/04 PHP
PHP中Socket连接及读写数据超时问题分析
2016/07/19 PHP
实现PHP搜索加分页
2016/10/12 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
2016/11/14 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
2020/04/06 PHP
javascript 命名规则 变量命名规则
2010/02/25 Javascript
jquery 操作日期、星期、元素的追加的实现代码
2012/02/07 Javascript
JQuery在页面中添加和除移DOM示例代码
2013/06/24 Javascript
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
2013/06/27 Javascript
js中取得变量绝对值的方法
2015/01/03 Javascript
javascript实现随时变化着的背景颜色
2015/04/02 Javascript
AngularJS向后端ASP.NET API控制器上传文件
2016/02/03 Javascript
jquery广告无缝轮播实例
2017/01/05 Javascript
JavaScript闭包_动力节点Java学院整理
2017/06/27 Javascript
AngularJS 打开新的标签页实现代码
2017/09/07 Javascript
React Native预设占位placeholder的使用
2017/09/28 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
Vue项目分环境打包的实现步骤
2018/04/02 Javascript
js+css实现红包雨效果
2018/07/12 Javascript
ES6中的迭代器、Generator函数及Generator函数的异步操作方法
2019/05/12 Javascript
VUEX采坑之路之获取不到$store的解决方法
2019/11/08 Javascript
vue中实现动态生成二维码的方法
2020/02/21 Javascript
vue父子组件间引用之$parent、$children
2020/05/20 Javascript
Vue按时间段查询数据组件使用详解
2020/08/21 Javascript
python代码实现ID3决策树算法
2017/12/20 Python
pandas 读取各种格式文件的方法
2018/06/22 Python
python实现用类读取文件数据并计算矩形面积
2020/01/18 Python
Python unittest单元测试openpyxl实现过程解析
2020/05/27 Python
电子狗项圈:eDog Australia
2019/12/04 全球购物
大学应届毕业生求职信
2014/05/24 职场文书
标准毕业生自荐信
2014/06/24 职场文书
高中班主任评语
2014/12/30 职场文书
2015年关爱留守儿童工作总结
2015/05/22 职场文书
慰问信的写作格式及范文!
2019/06/24 职场文书
解决使用了nginx获取IP地址都是127.0.0.1 的问题
2021/09/25 Servers