Maison  >  Article  >  développement back-end  >  Comment Yii filtre le mauvais code

Comment Yii filtre le mauvais code

*文
*文original
2018-01-02 12:03:421658parcourir

Comment Yii filtre-t-il les mauvais codes ? Cet article présente principalement l'utilisation du purificateur Yii CHtmlPurifier, qui peut réaliser la fonction de filtrage du mauvais code et implique des compétences d'utilisation associées dans les contrôleurs, les modèles, les filtres et les vues. Les amis dans le besoin pourront s'y référer. J'espère que cela sera utile à tout le monde. .

Les détails sont les suivants :

1. Utilisé dans le contrôleur :

public function actionCreate()
{
  $model=new News;
  $purifier = new CHtmlPurifier();
  $purifier->options = array(
    'URI.AllowedSchemes'=>array(
              'http' => true,
              'https' => true,
    ),
       'HTML.Allowed'=>'p',
  );
  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. Utilisé dans le modèle :

protected function beforeSave()
{
  $purifier = new CHtmlPurifier();
  $purifier->options = array(
    'URI.AllowedSchemes'=>array(
              'http' => true,
              'https' => true,
    ),
       'HTML.Allowed'=>'p',
  );
  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 . dans les filtres :

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'=>'p',
  );
  if(isset($_POST['news']){
    $_POST['news']['content'] = $purify($_POST['news']['content']);
  }
    $filterChain->run();
}

4. Utilisation dans les vues :

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

Recommandations associées :

Yii2 modal fenêtre contextuelle ActiveForm implémente la vérification asynchrone du formulaire Ajax

Yii2 implémente la connexion par interconnexion QQ

Analyse simple Yii2 utilisant le cache

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn