Есть ли способ автоматически фильтровать параметры getRequest () в Zend?

Я действительно не хочу вызывать фильтр Zend в моем коде после каждого getRequest-> getParam ('x'), если мне это не нужно. Есть ли ленивый способ фильтрации всего внутри getRequest волшебным образом?

Edit: Когда я говорю фильтр, я имею в виду, эскиз тегов, очистка XSS и экранирование любых символов sql escape.

то есть:

$myVar = $this->getRequest()->getParam('x'); filter the variable, escape sql stuf... etc 

Какой стандарт? Как вы это делаете?

Есть несколько способов справиться с вашей ситуацией.

Прежде всего, вы можете получить все параметры сразу:

 $params = $this->_request->getParams(); //_request is equivalent to getRequest() 

Таким образом, ленивый способ фильтрации всех ваших параметров будет заключаться в использовании ***** при объявлении ваших фильтров, что означает все поля, и будет выглядеть примерно так:

 $filters = array('*' => array('StringTrim','HtmlEntities','StripTags')); $input = new Zend_Filter_Input($filters,$validators,$params); if($input->isValid()) { //blah blah blah } 

Вы должны больше узнать об объекте запроса , а также о фильтрах , фильтрах ввода и валидаторах .

Единственный способ – сделать это по-любому.

  • используйте Zend_Filter_Input (как отмечалось выше, karim79), чтобы фильтровать информацию о том, как они должны быть сохранены или просмотрены (снятие тегов с помощью StripTags , литье в Int , StringTrim и т. д.), проверка правильности проверки, но не htmlentities, поскольку это, вероятно, должно быть сделанные на выходе, чтобы избежать осложнений в поиске db и т. д. В большинстве случаев поля должны быть индивидуально повернуты / проверены.

  • использовать параметризованные запросы ( Zend_Db_Select с? placeholders) всегда или, по крайней мере, использовать функции escape-функции db

  • выведите все выходные данные ( Zend_View_Helper_Escape -> $this->escape() ) по мере необходимости.

Ответ karim79 охватывает захват параметров в одном массиве.

Как правило, для очистки данных не требуется Zend_Filter для каждого запроса.

Чтобы предотвратить XSS, вы должны избегать вывода данных в представлении:

 $this->escape($someUserSuppliedData) 

и при работе с Zend_Db некоторые методы, такие как вставка и обновление, будут приводить данные для вас. При построении запросов вручную вы можете использовать функции Zend_Db, такие как quote

Возможно, он ищет способ перегрузить метод getRequest () и затем фильтровать внутри нового созданного метода объект запроса.

Выезд: http://framework.zend.com/manual/en/zend.controller.plugins.html

Затем вы можете просто использовать класс Zend_Filter или создать собственный класс фильтров, перегружающий выше.