我在插入所有字符串之前都这样做:
mysql_real_escape_string($_POST['position']);
我如何删除:'检索后?
所以我不会以:'" pizza '"结尾
这是否足够安全,或者我应该做其他事情?
谢谢
我建议你直接调用$_POST['position'](不要在上面调用mysql_real_escape_string)来获得非转义版本。
顺便说一下,你对安全的评论表明理解事物有点麻烦。
处理字符串的一种方法是处理转义版本,这导致了一种困难,而另一种方法是在嵌入之前处理另一种转义版本,这导致了另一种困难。我更喜欢后者。
使用stripslashes()
去掉转义字符
逃避是伟大的。如果值将是整数,我建议您这样做:
$value = (int) $_POST['some_int_field'];
这可能是因为魔术引号是启用的,所以要使它通用,使用以下命令:
if (get_magic_quotes_gpc()) { // Check if magic quotes are enabled
$position = stripslashes($_POST['position']);
} else {
$position = mysql_real_escape_string($_POST['position']);
}
mysql_real_escape_string()确实在SQL字符串中添加了's,但它们不应该进入数据库,因为它们仅用于字符串解析。
如果你在数据库中看到's,那么在你调用mysql_real_escape_string()之前,其他东西正在转义你的字符串。检查并确保magic_quotes_gpc没有打开