Я хочу иметь какой-то фильтр для всех моих текстовых полей в моем приложении, чтобы знать, содержит ли поле какое-то плохое содержимое, например, отфильтровывать недобросовестных пользователей.
Я думал о некоторых способах
preg_replace()
над php://input
поток и заменить плохой контентЯ хочу делать это динамично и не хочу писать много правил
Что является лучшим решением для моей ситуации (сверху или любой другой)?
Обновление: я ищу способ заменить ругань и ругань из пользовательского ввода и заменить его чем-то другим
Надеюсь, это то, что вы спрашиваете
Вы хотите удалить
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
Если ваши столбцы находятся над моделями, вы можете использовать что-то вроде этого:
public function rules()
{
$purifier = getHtmlPurifier();
return array(
array('column', 'filter', 'filter' => array($obj = $purifier, 'purify')),
);
}
Если вам не нравится использовать htmlPurifier, вы можете создать фильтр для любого другого типа, создав функцию.