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 相关文章推荐
给初学者的30条PHP最佳实践(荒野无灯)
Aug 02 PHP
codeigniter使用技巧批量插入数据实例方法分享
Dec 31 PHP
Fedora下安装php Redis扩展笔记
Sep 03 PHP
php基于socket实现SMTP发送邮件的方法
Mar 05 PHP
详解php的socket通信
Aug 11 PHP
Laravel5权限管理方法详解
Jul 26 PHP
php基于PDO实现功能强大的MYSQL封装类实例
Feb 27 PHP
PHP实现链式操作的三种方法详解
Nov 16 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 PHP
PHP观察者模式示例【Laravel框架中有用到】
Jun 15 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
Apr 04 PHP
tp5.1 框架数据库-数据集操作实例分析
May 26 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下保存远程图片到本地的办法
2010/08/08 PHP
php一次性删除前台checkbox多选内容的方法
2013/09/22 PHP
PHP URL参数获取方式的四种例子
2014/02/28 PHP
php封装的单文件(图片)上传类完整实例
2016/10/18 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
2017/03/10 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
Firefox/Chrome/Safari的中可直接使用$/$$函数进行调试
2012/02/13 Javascript
js转义字符介绍
2013/11/05 Javascript
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
jQuery实现鼠标划过添加和删除class的方法
2015/06/26 Javascript
jQuery实现平滑滚动的标签分栏切换效果
2015/08/28 Javascript
一个简单的JavaScript Map实例(分享)
2016/08/03 Javascript
如何理解jQuery中的ajaxSubmit方法
2017/03/13 Javascript
node.js + socket.io 实现点对点随机匹配聊天
2017/06/30 Javascript
如何重置vue打印变量的显示方式
2017/12/06 Javascript
jquery实现侧边栏左右伸缩效果的示例
2017/12/19 jQuery
React如何避免重渲染
2018/04/10 Javascript
javascript实现简易聊天室
2019/07/12 Javascript
JavaScript生成一个不重复的ID的方法示例
2019/09/16 Javascript
VuePress 中如何增加用户登录功能
2019/11/29 Javascript
Vuex的各个模块封装的实现
2020/06/05 Javascript
浅谈实现在线预览PDF的几种解决办法
2020/08/10 Javascript
[01:05:40]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第三场
2014/05/24 DOTA
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
Pyhton中防止SQL注入的方法
2015/02/05 Python
Python实现的字典值比较功能示例
2018/01/08 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
美国传奇滑手Paul Rodriguez创办的街头滑板品牌:Primitive Skateboarding
2019/10/29 全球购物
销售总监工作职责
2013/11/21 职场文书
综合办公室主任岗位职责
2014/04/13 职场文书
感恩父母的演讲稿
2014/05/06 职场文书
个人遵守党的政治纪律情况对照检查材料思想汇报
2014/09/25 职场文书
八项规定整改方案
2014/10/01 职场文书
python实现局部图像放大
2021/11/17 Python
Python中super().__init__()测试以及理解
2021/12/06 Python