Php 使用HTML\u实体\u解码对HTML进行解码后,它不会正确显示
我在解码和显示一些HTML时遇到了问题 我从一个名为TinyMCE的WYSIWYG文本编辑器发布数据,并使用以下代码将其存储到数据库中,不包括不相关的代码Php 使用HTML\u实体\u解码对HTML进行解码后,它不会正确显示,php,html,Php,Html,我在解码和显示一些HTML时遇到了问题 我从一个名为TinyMCE的WYSIWYG文本编辑器发布数据,并使用以下代码将其存储到数据库中,不包括不相关的代码 $text = $_POST['bbcode_field']; // from textarea if(get_magic_quotes_gpc()){ $text = stripslashes($text); //strip off the slashes if they are magically added. } $
$text = $_POST['bbcode_field']; // from textarea
if(get_magic_quotes_gpc()){
$text = stripslashes($text);
//strip off the slashes if they are magically added.
}
$text = htmlentities($text);
然后,我使用以下命令将数据输入数据库
Report ='".htmlspecialchars(mysql_real_escape_string($text), ENT_QUOTES)."',
这很好,它可以很好地插入数据库。当我尝试从数据库中检索数据并使用
'.html_entity_decode($row['Content']).'
和回显,它的回显,但包括HTML格式,如标签等
我需要显示在HTML页面上,但使用HTML标记的格式
我哪里出了问题
谢谢。删除以下内容:
$text = htmlentities($text);
以及此处标记的部分:
Report ='".htmlspecialchars(mysql_real_escape_string($text), ENT_QUOTES)."',
^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^
这是:
html_entity_decode($row['Content'])
问题是您对HTML实体进行了两次编码,但只对它们进行了一次解码。这意味着它们只编码一次,当然不会被解释为HTML,这是编码它们的关键。实际上,您根本不需要或不想对它们进行编码
但是,如果您接受来自客户端的任意HTML,则需要对其进行过滤以避免HTML注入。仔细看看。停止对HTML进行双重和三重编码,然后再次解码。你为什么要这么做?如果我不保留ENT_引号,那么我就不能在文本中添加单引号或双引号,因为它们会搞乱查询。有办法解决这个问题吗?您已经通过SQL转义实现了。看见也看到