如何允许htmlpurifier代码(How to allow code in htmlpurifi

2019-09-01 16:08发布

我是在创造一个评论框,人们可以提出他们的问题的中间。

我得到了很多的人问他们是怎么做到的东西,涉及代码输入到窗体。

该表格经过htmlpurifier,以确保其安全使用。

但是,当曾经有人输入回波码等它不允许它。 或者,如果有人输入一个div那么它不会在<code>包装时允许,要么,就算。

比如这个:

<code><div class="classname"></div></code>

将只需添加一个div。

<code><?php echo $word; ?></code>

不会显示的代码在所有。

我已经设置了htmlpurifier的方法是:

$content    = $_POST['comment'];

$rawf   =  str_replace('<code>', '<pre><code>', $content);
$rawfp  =  str_replace('</code>', '</code></pre>', $rawf);

require_once '../Libs/htmlPurifier/library/HTMLPurifier.auto.php';

$purifierconfig = HTMLPurifier_Config::createDefault();

$purifierconfig->set('HTML.Allowed', 'b,a[href],i,em,br,code,pre');

$purifier   = new HTMLPurifier($purifierconfig);
$clean_html = $purifier->purify($rawfp);
$ticketpost =  str_replace('<a ', '<a rel="nofollow" ', $clean_html);

然后$ ticketpost使用PDO预处理语句插入到数据库中。

有什么事我没有做,或者做错了什么?

如果是,请您能有所帮助。

谢谢

Answer 1:

你的问题是,如果输入的是真正的HTML,那么就需要为了在结果中显示转义任何代码片段。 我们有专门的<![CDATA[ put code here ]]>语法了这一点,但有时候,你不希望打扰用户提供这样的额外语法。 在这种情况下,你可以做代码标签,在回调逃脱两个代码标记之间的代码preg_replace_callback。 但注意,现在,有没有办法表达,其中包含代码的标签的代码片段! 因此,它是所有的权衡。



文章来源: How to allow code in htmlpurifier