Php 有没有办法在Zend中自动筛选getRequest()参数?

Php 有没有办法在Zend中自动筛选getRequest()参数?,php,zend-framework,Php,Zend Framework,我真的不想在每次getRequest->getParam('x')之后调用代码中的Zend过滤器,如果我不需要的话。有没有一种惰性的方法可以神奇地过滤getRequest中的所有内容 Edit:当我说filter时,我的意思是转义标记、清除XSS以及转义任何sql转义字符 i、 e: 标准是什么?你是怎么做到的?有几种方法可以解决你的情况 首先,您可以一次获取所有参数: $params = $this->_request->getParams(); //_request is equ

我真的不想在每次getRequest->getParam('x')之后调用代码中的Zend过滤器,如果我不需要的话。有没有一种惰性的方法可以神奇地过滤getRequest中的所有内容

Edit:当我说filter时,我的意思是转义标记、清除XSS以及转义任何sql转义字符

i、 e:


标准是什么?你是怎么做到的?

有几种方法可以解决你的情况

首先,您可以一次获取所有参数:

$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
}

您应该阅读更多有关对象的信息,以及,和。

有几种方法可以处理您的情况

首先,您可以一次获取所有参数:

$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
}

您应该阅读更多关于对象的信息,以及,和。

karim79的回答涵盖了在一个数组中获取参数

一般来说,您不需要对每个请求使用Zend_过滤器来清理数据

要防止XSS,应在视图中转义数据输出:

$this->escape($someUserSuppliedData)

在处理Zend_Db时,插入和更新等方法会为您引用数据。手动构造查询时,您可以使用Zend_Db函数,如karim79的答案包含在一个数组中获取参数

一般来说,您不需要对每个请求使用Zend_过滤器来清理数据

要防止XSS,应在视图中转义数据输出:

$this->escape($someUserSuppliedData)

在处理Zend_Db时,插入和更新等方法会为您引用数据。当手动构造查询时,您可以使用Zend_Db函数,如

,唯一的方法是使用各种方法

  • 使用
    Zend\u Filter\u Input
    (如上所述,由karim79)将内容过滤到应该如何存储或查找(使用
    StripTags
    剥离标签,转换为
    Int
    StringTrim
    等),在需要验证的地方进行验证-但不验证htmlentities,因为这可能应该在输出上进行,以避免数据库搜索等方面的复杂性。在大多数情况下,字段应该单独过滤/验证

  • 始终使用参数化查询(
    Zend\u Db\u Select
    with?占位符),或者至少使用Db escape函数

  • 根据需要转义所有输出(
    Zend\u View\u Helper\u escape
    ->
    $this->escape()


唯一的办法就是千方百计去做

  • 使用
    Zend\u Filter\u Input
    (如上所述,由karim79)将内容过滤到应该如何存储或查找(使用
    StripTags
    剥离标签,转换为
    Int
    StringTrim
    等),在需要验证的地方进行验证-但不验证htmlentities,因为这可能应该在输出上进行,以避免数据库搜索等方面的复杂性。在大多数情况下,字段应该单独过滤/验证

  • 始终使用参数化查询(
    Zend\u Db\u Select
    with?占位符),或者至少使用Db escape函数

  • 根据需要转义所有输出(
    Zend\u View\u Helper\u escape
    ->
    $this->escape()


    • 也许他正在寻找一种方法来重载getRequest()方法,然后在新创建的方法中过滤request对象

      退房:


      然后,您可以使用Zend_Filter类或创建自己的筛选器类来重载上述内容。

      也许他正在寻找一种方法来重载getRequest()方法,然后在新创建的方法中筛选request对象

      退房:

      然后,您可以使用Zend_过滤器类或创建自己的过滤器类来重载上述内容