Zend санитарный ввод - PullRequest
       5

Zend санитарный ввод

1 голос
/ 22 января 2011

Я очистил ввод моей формы (поле textarea), и когда я отображаю ее на своем виде, она выглядит так:

Я в ней, чтобы выиграть !!Я с нетерпением жду участия в конкурсе в Центральном конкурсе.Он стремится перекрестно опылять сцену, экран и стерео
с работой, которая говорит и о юморе, и о разочарованиях современной жизни.

В моем контроллере у меня есть это:

public function init(){

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

}

Но работает только один, если я стираю один setEscape, тогда другой работает и наоборот.Так что я могу заставить работать полоски, если я поставлю их сначала, но html_entity_decode не будет работать, и наоборот

1 Ответ

5 голосов
/ 22 января 2011

Вам нужно определить свою собственную функцию, которую следует использовать для экранирования.Например, вы можете определить класс My_Tools в library / My / Tools.php следующим образом:

<?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'));

}

Конечно, было бы лучше добавить инструменты в автозагрузчик, но это только пример.

...