我应该如何在Mysql中配置用户注释?

时间:2013-11-01 20:38:37

标签: php html mysql encoding comments

好吧,我一直在开发一个从头开发的博客,但是我遇到了一个市长问题,当用户发表评论时,表单会询问名称和评论,这些名称和评论在以下文字中出现:

`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;字符以同样的方式显示它们?

5 个答案:

答案 0 :(得分:0)

这不是存储问题。这是一个输出问题。您应该使用htmlentities()来转义HTML输出。

答案 1 :(得分:0)

您需要使用htmlentities

echo  htmlentities($comment);

htmlentities

答案 2 :(得分:0)

您可以在存储到数据库之前使用mysql_real_escape_string,尽管您现在应该使用pdo来查看MySQL已被折旧。

答案 3 :(得分:0)

您可以使用htmlentities()htmlspecialchars()方法将HTML标记转换为文本。您甚至应该这样做,因为未经检查的内容发送到数据库可能会导致一个名为SQL Injection的漏洞,您的数据可能会被损坏或丢失。因此,请确保在将字符存储到数据库之前将其转义。

答案 4 :(得分:0)

使用htmlspecialchars()汇总您的输出,它会使用正确的编码对您的<>进行编码,并按原样显示HTML:

&lt;span style="color:#0F0"&gt;Hello world&lt;/span&gt;

在输出中显示所需的显示:

这是PHP中的信息:http://id.php.net/manual/en/function.htmlspecialchars.php

执行的翻译是:

  • '&安培;' (&符号)
  • '“'(双引号)
  • “'”(单引号)
  • '&LT;' (小于)
  • '&GT;' (大于)