Каков наилучший способ фильтрации текстовых столбцов

Я хочу иметь какой-то фильтр для всех моих текстовых полей в моем приложении, чтобы знать, содержит ли поле какое-то плохое содержимое, например, отфильтровывать недобросовестных пользователей.

Я думал о некоторых способах

  • Я мог бы preg_replace() над php://input поток и заменить плохой контент
  • Я мог бы написать собственный фильтр и поставить его для каждого поля в каждой модели, что является много, и я действительно не хочу туда идти
  • Я мог бы как-то переопределить стандартный sting валидатор yii (пока не знаю, как это сделать …)

Я хочу делать это динамично и не хочу писать много правил

Что является лучшим решением для моей ситуации (сверху или любой другой)?

Обновление: я ищу способ заменить ругань и ругань из пользовательского ввода и заменить его чем-то другим

2

Решение

Надеюсь, это то, что вы спрашиваете

Вы хотите удалить

  • Scripts в полях
  • Tags в полях и т. д.

Вы можете пойти с Расширение ввода Yii. Удаляет нежелательные данные из данных пользователя.

У вас есть два способа сделать это

  • для каждой формы в контроллере
  • Для всех форм в приложении во всем мире в config/main.php

В случае, если сделано глобально и когда вы используете некоторые CKEditor или же tinyeditor Вы не получите необходимый HTML опубликован. Но тогда у вас есть методы, чтобы получить их также

РЕДАКТИРОВАТЬ:

Ваш случай состоит в том, чтобы удалить ненужные слова из ввода пользователей

так

protected function beforeAction($action) {
//Write your logic here with the posted variables.
return parent::beforeAction($action);
}

Это может быть один раз во всем контроллере (уверен, что это будет работать).

(НЕ ПРОБОВАНО) Другой способ заключается в том, чтобы иметь его в родительском контроллере, который Controller

1

Другие решения

Если ваши столбцы находятся над моделями, вы можете использовать что-то вроде этого:

public function rules()
{
$purifier = getHtmlPurifier();
return array(
array('column', 'filter', 'filter' => array($obj = $purifier, 'purify')),
);
}

Если вам не нравится использовать htmlPurifier, вы можете создать фильтр для любого другого типа, создав функцию.

1

По вопросам рекламы [email protected]