Zend消毒输入

时间:2011-01-22 06:38:39

标签: zend-framework zend-form

我已经清理了我的表单的输入(textarea字段),当我在我的视图中显示它时,它出现如下:

& lt; p& gt;我要赢得它!我期待在& lt; br /& gt;比赛中心参加比赛。他的目标是对舞台,屏幕和立体声以及现代生活中的幽默和挫折的作品进行交叉授粉。& lt; / p& gt;

在我的控制器中我有这个:

public function init(){

 $this->view->setEscape('html_entity_decode');
 $this->view->setEscape('stripslashes');

}

但是只有一个可以工作,如果我擦除了一个setEscape,那么另一个工作,反之亦然。所以如果我把它放在第一位但是html_entity_decode不能正常工作,我可以让striplashes工作,反之亦然

1 个答案:

答案 0 :(得分:5)

您需要定义自己应该用于转义的函数。例如,您可以在library / My / Tools.php中定义一个类My_Tools,如下所示:

<?php
#Tools.php

class My_Tools {

    /**
     * My custom escape function
     *
     * @param string $str String to be escaped
     * @return string Escaped string
     */
    static function myEscape($str) {
        $str = html_entity_decode($str);
        return stripslashes($str);
    }

}

?>

然后,你的init()可以有以下形式:

public function init() {

    require_once(APPLICATION_PATH . '/../library/My/Tools.php');
    $this->view->setEscape(array('My_Tools', 'myEscape'));

}

当然最好将工具添加到Autoloader,但这只是一个例子。