我看到各处都有不同的评论,有人说zend框架会自动清理发布/获取数据,但其他人则表示没有。
这笔交易是什么?我已经看到使用getParams上的foreach在predispatch中执行它是最快捷的方式,但有没有人有任何建议?
答案 0 :(得分:4)
不会自动清理任何请求数据。它不能,因为这需要它知道如何来消毒它,例如是$_GET['foo']
应该对字符串进行消毒还是对数字进行消毒?你必须告诉它。
无论是在相应的控制器操作中还是在ActionHelper中手动清理输入,还是在Controller插件中自动清理输入,或者在引导程序中,还是混合使用这些输入都取决于您。
使用适当的。
答案 1 :(得分:4)
该交易可能与Zend_Controller_Request
相比Zend_Db
。请求数据通常放入数据库中。
请求对象不会转义任何内容。您可以强制它使用过滤器,表单过滤器或使用这里描述的反射技术:
Zend_Db
查询基本上像其他ORM一样被转义,例如在PDO中。
答案 2 :(得分:1)
它肯定不会为您自动清理变量。您可以执行类似foreach
的操作或使用array_map
,具体取决于上下文,例如:
$_POST = array_map('mysql_real_escape_string', $_POST);
理想情况下,您应该根据具体情况处理每个变量。我个人使用PHP的filter_var
进行过滤和消毒。