6

我的网站上有一个文本框,我需要存储用户输入到我的数据库中的任何内容,并在以后检索它。我需要完全按照用户输入的方式存储它,包括特殊字符、回车符等。

我应该在 PHP 中使用什么过程将其存储在我的数据库字段(这是一个“文本”字段)中?我应该使用 PHP 的 html_encode 还是类似的东西?

谢谢你。

编辑:我还需要存储正确的格式,即制表符和多个空格。

4

5 回答 5

5

使用mysql_real_escape_string()

$safetext = mysql_real_escape_string($_POST['text']);
$query = "INSERT INTO my_table (`my_field`) VALUES ('$safetext')";
mysql_query($query);

那应该行得通。

于 2009-04-04T06:52:43.943 回答
4

在将数据写入数据存储时,您不应该对数据进行 html 编码 - 这样您也可以将数据用于其他用途(例如电子邮件、PDF 文档等)。正如Assaf已经说过的:通过转义输入或使用参数化插入查询来避免 SQL 注入是强制性的。

您应该,不,比方说,在 HTML 页面上显示数据时必须对数据进行 html 编码!这将使危险的 HTML 或 Javascript 代码变得无用,因为数据中存在的 HTML 标记将不再被浏览器识别为 HTML 标记。

当您允许用户发布带有 HTML 标记的数据时,该过程会稍微复杂一些。然后,您必须跳过输出编码以支持输入清理,这可能是任意复杂的,具体取决于您的需要(例如允许的标签)。

于 2009-04-04T07:02:03.907 回答
3

您不必对其进行编码即可将其存储在 mysql 中。

确保使用参数化插入命令,以避免 SQL 注入。

于 2009-04-04T06:48:33.783 回答
3

以下应该有效:

if (get_magic_quotes_gpc()) {
  $content = stripslashes($content);
}
$content = mysql_real_escape_string($content);

如果您的列是 utf8,那么特殊字符应该不会有问题。正确格式化内容后,您可以使用标准插入方法将其提供给 mysql。

于 2009-04-04T06:50:58.067 回答
1

除了格式之外,要正确存储用户文本,您所要做的就是使用 . 将所有换行符转换为换行符nl2br($inputtext)。在过滤输入后执行此操作。

于 2010-04-01T15:36:02.137 回答