Как лучше проверять текстовые поля в модели?

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Объект 417
Сообщения: 116
Зарегистрирован: 2012.06.08, 18:56
Контактная информация:

Как лучше проверять текстовые поля в модели?

Сообщение Объект 417 »

Добрый вечер.

Есть текстовое поле ,которое заполняет пользователь, к примеру, текст комментария. Перед занесением его в БД нужно обезопасить.
Как это лучше сделать?

В beforeSave() прописать:

Код: Выделить всё

$this->text = htmlspecialchars($this->text); 
Или в rules() указать:

Код: Выделить всё

array('text', 'match', 'pattern' => '/^[a-zа-я0-9 _\-\[\]\(\)\.\,\!\?\:\;]+$/is'), 
Или есть еще и другие варианты?

Ах да, ввод пользователем всяких редких спецсимволов не предусмотрен.


Объект 417
Сообщения: 116
Зарегистрирован: 2012.06.08, 18:56
Контактная информация:

Re: Как лучше проверять текстовые поля в модели?

Сообщение Объект 417 »

У меня довольно плохо с английским, поэтому осмысленный перевод дается с трудом.

Как я понял. компонент input (вторая ссылка), обезопасивает переданные параметры. Это хорошо.
А как быть в такой ситуации:
я сохранил в бд какой то текст и при этом он, скажем, экранировал знак <. Заем я решил отредактировать этот текст. При выгрузке из бд этот символ будет выглядеть как <. А при повторном сохранении в бд он экранирует еще и знак &. Может ли он производить обратное экранирование?

Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: Как лучше проверять текстовые поля в модели?

Сообщение lancecoder »

вообще в предложенном случае, я бы так
Или в rules() указать:

Код: Выделить всё
array('text', 'match', 'pattern' => '/^[a-zа-я0-9 _\-\[\]\(\)\.\,\!\?\:\;]+$/is'),
то я дал линк так на ознакомление, у вас белый список это шикарна )

Аватара пользователя
RusAlex
Сообщения: 324
Зарегистрирован: 2010.08.29, 15:30

Re: Как лучше проверять текстовые поля в модели?

Сообщение RusAlex »

я тоже за разрешение ввода только допустимых символов.

Объект 417
Сообщения: 116
Зарегистрирован: 2012.06.08, 18:56
Контактная информация:

Re: Как лучше проверять текстовые поля в модели?

Сообщение Объект 417 »

А как в регулярном выражении указать все символы, кроме определенных (скажем < и >)? А то слишком много перечислять, а так открывающий дескриптор не поставишь и никаких проблем.


Ответить