我让用户输入一些将存储在 sql 中的信息。当然,我想转义所有引号等......但我也不希望将这些内容输出到最终的 html 中。
我正在为所有 $_POST 变量运行这个函数。有效吗?
function cleanArray($array) //prevent funky insertions
{
foreach ($array as &$value)
{
$value = mysql_real_escape_string(stripslashes(nl2br($value)));
}
return $array;
}
我担心转义字符串和 stripslashes 相互抵消?
最佳答案
要在将字符串数据插入数据库之前对其进行转义,请使用 mysql_real_escape_string
。
要稍后在 HTML 页面中输出相同的数据,如果您希望 HTML 源代码显示为文字字符,请使用 htmlspecialchars()
,或者如果你想悄悄地删除任何 HTML。
不需要其他任何东西,除非你有 magic quotes已激活,在这种情况下,在执行 mysql_real_escape_string()
之前,您确实需要 stripslashes()
。但是,魔术引号是 deprecated and it would be much better to turn them off .
关于php - mysql_real_escape_string() 会取消 stripslashes() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6144385/