Проверка достоверности списка статей |
Напомним, что ранее в XML-файл был введен атрибут validate"options" для установки параметров article_ordering и article_ordering_direction. Это было сделано с целью не дать злоумышленнику возможность ввести в форму злонамеренный код SQL в обход проверки достоверности. Посмотрим, как эта проверка действует на практике. Как и в предыдущем примере, поле объекта типа JForm размечается атрибутом validate, а при сохранении формы в теле метода validate () из класса JForm происходит обращение к классу JFormRule, в котором установлено правило проверки достоверности вводимых данных. Значение данного атрибута должно совпадать с именем файла, в котором объявлен класс JFormRule. В данном случае атрибут validate имеет значение "options", а следовательно, файл должен иметь имя options.php, тогда как класс — JFormRuleOptions. Как упоминалось ранее, классы основных правил проверки достоверности хранятся в папке libraries/ joomla/form/rules. Но поскольку данное правило является основным, то указывать путь к упомянутой папке в атрибуте addrulepath из XML-файла совсем не обязательно. В листинге ниже приведен исходный код из файла options.php. Исходный код из файла libraries/joomla/form/rule/options.php /** Приведенный выше исходный код из файла options.php довольно прост. Как и прежде, объявляемый класс JFormRuleOptions расширяет класс JFormRule и имеет единственный метод test (). Переменная $element содержит элемент field, тогда как переменная $ value — введенное пользователем значение. При вычислении выражения $element->option в теле метода test () возвращается массив объектов типа JXMLElement — по одному на каждый элемент option из элемента разметки field. Далее введенное пользователем значение (переменной $value) проверяется в цикле на совпадение с одним из всех имеющихся вариантов выбора (значением атрибута value в элементе разметки option). И как только совпадение будет обнаружено, произойдет немедленный возврат логического значения true из цикла. Если же введенное значение не совпадет ни с одним из значений в массиве, определяющих имеющиеся варианты выбора, из метода test {) будет возвращено логическое значение false. Для опробования рассматриваемой здесь проверки достоверности измените форму (в частности, средствами Firebug), введя в ней недействительное значение параметра упорядочения статей (article_ordering; например, значение "ххх" вместо значения "а. title" атрибута default). При последующей попытке сохранить форму вы должны получить сообщение об ошибке "Invalid Field: Article Ordering" (Недействительное поле: упорядочение статей). А если вы удалите атрибут validate="options" из XML-файла данного модуля и сделаете еще одну попытку, форма будет сохранена. Как видите, класс JForm представляет немало возможностей для точной настройки проверки достоверности данных, вводимых в полях формы. В частности, для ограничения возможных вариантов ввода данных можно выбрать соответствующие типы полей, для исправления недействительных данных в процессе их сохранения — воспользоваться фильтрами, а для того, чтобы воспрепятствовать пользователю сохранить недействительные данные, — установить правила проверки их достоверности. В последнем случае можно воспользоваться стандартными правилами или же установить свои собственные. Все эти способы можно сочетать, согласовывать и адаптировать под конкретные нужды, чтобы добиться желаемого режима работы заполняемой формы.
Понравился материал? Пригодилась информация? Плюсани в социалки!
|
Похожие новости | |
|