我正在尝试在网页上显示评论,但我遇到了一些麻烦。
我正在努力处理两种不同类型的评论:
(1)XSS类型..例如<script type="text/javascript">alert('hi')</script>
。这可以通过在进入数据库之前转义它然后在其上运行stripslashes和htmlentities来相当容易地处理。
(2)<br>
的评论打破了。当数据存储到数据库中时,我正在运行nl2br,因此数据看起来像hi<br>hello<br><br>etc
。但是,当我显示此评论时,<br>
不会像我希望的那样变成分页符。
知道该怎么办?我应该注意,关闭htmlentities修复了第二种类型,但第一种类型然后作为纯html执行并显示警告对话框。
谢谢, 菲尔
答案 0 :(得分:11)
如果您要删除不需要的代码,可以尝试strip_tags
。它支持allowable_tags
,因此您可以指定任何不想被剥离的标记。来自manual的示例:
// Allow <p> and <a>
// you can add <br> if you want it not stripped
echo strip_tags($text, '<p><a>');
因此,在将所有\n
转换为换行符后,您不必担心它会被剥离。可能不是你想要的,但希望它能给出一个想法。
答案 1 :(得分:2)
一种方法:将<br>
替换为占位符,例如\n
。然后做htmlentities来清理HTML代码。最后,将\n
替换回<br>
以恢复换行符。