【发布时间】:2012-12-04 20:52:02
【问题描述】:
我有一个文本区域,用户也可以添加注释。在下一页上,我使用$_POST[Comments] 来显示输入的内容。我有一个编辑按钮,可以返回查看输入的内容并编辑注释,但是当我显示 $_POST[Comments] 时,它会显示所有内容,直至撇号。
例子:
原始输入:Let's try this.
编辑时:Let
现在,当我将它传递给服务器进行 SQL 添加时,我使用以下函数来防止 SQL 注入
function keepSafe($value) {
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
if (!is_numeric($value)) {
$value = "'" . mysqli_real_escape_string($value) . "'";
}
return $value;
}
以下是我用来格式化输入以进行 SQL 插入的内容。
$Comments = str_replace("\n","<br />",$_POST['CustComments']);
$Comments = keepSafe($_POST['Comments']);
在提交之前进行编辑时,我需要能够看到注释部分中的所有撇号。而且我想确保当我提交它是一个 SQL 注入阻止安全代码。
【问题讨论】:
-
您首先使用
$_POST['CustComments'],然后在最后一个示例中使用$_POST['Comments'],如果这很重要(对您来说应该)。此外(不是特定于答案),您应该替换\r\n而不仅仅是\n(从 Windows 的角度来看)。另外(不具体回答),您应该使用准备好的语句而不是直接变量插入(因为您使用的是 mysqli)。 -
看起来您正在从一个非常古老的来源获取示例代码。魔术引号很久以前就从 PHP 中删除了。至于如何正确处理,这就是prepared statements的用途。
标签: php textarea apostrophe