好吧,我一直在开发一个从头开发的博客,但是我遇到了一个市长问题,当用户发表评论时,表单会询问名称和评论,这些名称和评论在以下文字中出现:
`comname` VARCHAR( 50 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL
和
`comment` VARCHAR( 1000 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL
分别是,但如果用户输入html标签,当php显示来自MySQL的信息时,它会显示html,我不希望这种情况发生。例如,当用户写道:
<span style="#0F0">Hello world</span>
作为评论,它以绿色显示文本“Hello world”。
有没有办法避免这种情况,例如编码&lt;&gt;字符以同样的方式显示它们?
答案 0 :(得分:0)
这不是存储问题。这是一个输出问题。您应该使用htmlentities()
来转义HTML输出。
答案 1 :(得分:0)
答案 2 :(得分:0)
您可以在存储到数据库之前使用mysql_real_escape_string
,尽管您现在应该使用pdo来查看MySQL已被折旧。
答案 3 :(得分:0)
您可以使用htmlentities()
或htmlspecialchars()
方法将HTML标记转换为文本。您甚至应该这样做,因为未经检查的内容发送到数据库可能会导致一个名为SQL Injection的漏洞,您的数据可能会被损坏或丢失。因此,请确保在将字符存储到数据库之前将其转义。
答案 4 :(得分:0)
使用htmlspecialchars()
汇总您的输出,它会使用正确的编码对您的<
或>
进行编码,并按原样显示HTML:
<span style="color:#0F0">Hello world</span>
在输出中显示所需的显示:
这是PHP中的信息:http://id.php.net/manual/en/function.htmlspecialchars.php
执行的翻译是: