如何存储<textarea>数据,以及转义和返回数据</textarea>

时间:2011-07-11 04:38:11

标签: php textarea html-entities mysql-real-escape-string

在MySQL中存储数据的最佳途径是什么。我应该使用MySQL,TEXT作为我的字段类型吗?

当使用带有返回值\ r \ n的mysql_real_escape_string()时也是如此。 但是之后我应该在它上面运行htmlentities()吗?

然后当我将数据返回到屏幕时我应该使用NL2BR()?

试图找出存储此信息的最佳路线。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

真的取决于你想要存储的内容。对于诸如用户名,密码等的东西......那么你可以使用varchar。但是如果您存储长文本,例如新闻帖子或html数据,那么您可以使用TEXT或LONG TEXT(取决于它的长度)。

插入数据库时​​,您应该始终使用mysql_real_escape_string()。如果您从数据库输出HTML,您可能想运行htmlentities或html_specialchars以确保您没有输出用户注入的javascript,可以将您的用户重定向到黑客网站等。

另一个想法是,您可以在插入数据库之前使用htmlentities转义数据,但这是您的选择。

NL2BR非常适合将所有\ r \ n强制转换为<

所以,好像你走在正确的轨道上......

答案 1 :(得分:0)

对于存储来自用户的ASCII数据,

TEXTTINYTEXT或类似的东西应该没问题。如果您不需要大量空间,可以考虑VARCHAR

我认为mysql_real_escape_string()转义了可能危害SQL查询安全性的字符(单引号,双引号等),但没有做多少。

htmlentities()转换保留的html字符,例如&lt;和&gt;进入他们的html编码等价物,&amp; lt;和&amp; gt;分别。这些字符对SQL查询没有危险,因此您可能不需要转义它们,除非您想要将用户输入的HTML标记显示为文本,而不是将其解释为HTML。

NL2BR()可能也没有必要。

最重要的是,您决定何时使用这些功能取决于您的最终应用。您可能需要/想要一些但不需要其他人(尽管您绝对应该使用mysql_real_escape_string()