HTMLPurifier mit dem Zend Framework nutzen, Teil 2

Im ersten Teil haben wir uns mit der Installation und Integration von HTMLPurifier als Filter für Eingaben beschäftigt. Diesmal geht es um darum Ausgaben entsprechend zu filtern, getreu dem Motto “Filter input, Escape output”.

Erstellung eines View Helpers

Um Variablen in View-Skripten zu escapen, bietet sich ein View Helper an.

Wir erstellen uns den Helper in library/App/View/Helper/HtmlPurifier.php:

<?php
/**
 * @see Zend_View_Helper_Abstract
 */
require_once 'Zend/View/Helper/Abstract.php';
 
/**
 * @see App_Filter_HtmlPurifier
 */
require_once 'App/Filter/HtmlPurifier.php';
 
/**
 * @category App
 * @package App_View
 * @subpackage Helper
 */
class Zend_View_Helper_HtmlPurifier extends Zend_View_Helper_Abstract
{
    /**
     * Returns the string $value, purified by HTMLPurifier
     *
     * @param string $value
     * @param mixed $config
     * @return string
     */
    public function htmlPurifier($value, $config = null)
    {
        $filter = new App_Filter_HtmlPurifier($config);
        return $filter->filter($value);
    }
}

Der Code ist relativ simpel, da wir einfach unseren bereits erstellten Filter nutzen.

Nun müssen wir dem Zend_View-Objekt den Helper-Pfad mitteilen:

$view->setHelperPath('App/View/Helper', 'App_View_Helper');

Oder alternativ, falls Zend_Application genutzt wird, folgendes in die application.ini eintragen:

resources.view.helperPath.app.App_View_Helper = "App/View/Helper"

Und so lässt sich dann der View Helper in den View-Skripten nutzen:

<p>
    <?php echo $this->htmlPurifier($this->comment_text, array('HTML.Allowed' => 'b,strong,a[href]')); ?>
</p>

Links zum Thema