0

Well, I've been working on a blog developed from scratch, but I encountered a mayor problem, when a user makes a comment, the form asks for Name and Comment which are almacened in:

`comname` VARCHAR( 50 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL

and

`comment` VARCHAR( 1000 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL

Respectively, but if the user inputs html tags, when php displays the information from MySQL, it displays html, I don't want this to happen. For example when an user writes:

<span style="#0F0">Hello world</span>

as comment, It displays the text "Hello world" in green.

Is there any way to avoid this, for example, encoding <> characters to display them the same way?

4

5 回答 5

0

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

于 2013-11-01T20:40:38.563 回答
0

你需要使用htmlentities

echo  htmlentities($comment);

实体

于 2013-11-01T20:41:07.937 回答
0

用它包装您的输出htmlspecialchars()将使用正确的编码对您的<>进行编码,并按应有的方式显示 HTML:

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

在输出中为您提供所需的显示:

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

执行的翻译是:

  • '&'(和号)
  • '"'(双引号)
  • "'"(单引号)
  • '<'(小于)
  • '>' (大于)
于 2013-11-01T21:30:13.200 回答
0

您可以mysql_real_escape_string在存储到数据库之前使用,尽管您应该考虑使用 pdo 现在 MySQL 已贬值。

于 2013-11-01T20:47:07.147 回答
0

您可以使用这些方法htmlentities()htmlspecialchars()将 HTML 标记转换为文本。您甚至应该这样做,因为未经检查地将内容发送到数据库可能会导致称为 SQL 注入的漏洞,您的数据可能会损坏或丢失。因此,在将字符存储到数据库之前,请务必对字符进行转义。

于 2013-11-01T20:48:33.577 回答