我的网站上有一个文本框,我需要存储用户输入到我的数据库中的任何内容,并在以后检索它。我需要完全按照用户输入的方式存储它,包括特殊字符、回车符等。
我应该在 PHP 中使用什么过程将其存储在我的数据库字段(这是一个“文本”字段)中?我应该使用 PHP 的 html_encode 还是类似的东西?
谢谢你。
编辑:我还需要存储正确的格式,即制表符和多个空格。
我的网站上有一个文本框,我需要存储用户输入到我的数据库中的任何内容,并在以后检索它。我需要完全按照用户输入的方式存储它,包括特殊字符、回车符等。
我应该在 PHP 中使用什么过程将其存储在我的数据库字段(这是一个“文本”字段)中?我应该使用 PHP 的 html_encode 还是类似的东西?
谢谢你。
编辑:我还需要存储正确的格式,即制表符和多个空格。
$safetext = mysql_real_escape_string($_POST['text']);
$query = "INSERT INTO my_table (`my_field`) VALUES ('$safetext')";
mysql_query($query);
那应该行得通。
在将数据写入数据存储时,您不应该对数据进行 html 编码 - 这样您也可以将数据用于其他用途(例如电子邮件、PDF 文档等)。正如Assaf已经说过的:通过转义输入或使用参数化插入查询来避免 SQL 注入是强制性的。
您应该,不,比方说,在 HTML 页面上显示数据时必须对数据进行 html 编码!这将使危险的 HTML 或 Javascript 代码变得无用,因为数据中存在的 HTML 标记将不再被浏览器识别为 HTML 标记。
当您允许用户发布带有 HTML 标记的数据时,该过程会稍微复杂一些。然后,您必须跳过输出编码以支持输入清理,这可能是任意复杂的,具体取决于您的需要(例如允许的标签)。
您不必对其进行编码即可将其存储在 mysql 中。
确保使用参数化插入命令,以避免 SQL 注入。
以下应该有效:
if (get_magic_quotes_gpc()) {
$content = stripslashes($content);
}
$content = mysql_real_escape_string($content);
如果您的列是 utf8,那么特殊字符应该不会有问题。正确格式化内容后,您可以使用标准插入方法将其提供给 mysql。
除了格式之外,要正确存储用户文本,您所要做的就是使用 . 将所有换行符转换为换行符nl2br($inputtext)
。在过滤输入后执行此操作。