php - mysql_real_escape_string() 会取消 stripslashes() 吗?

标签 php mysql arrays mysql-real-escape-string stripslashes

我让用户输入一些将存储在 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/

相关文章:

php_network_getaddresses : getaddrinfo failed: Name or service not known

php - 在数据源中找不到 Cake PHP 表

c - 在 C 中显示数组中的项目

java - java中如何判断元素是否在数组中?

具有预定义大小的 C++ 数组作为成员变量和内存泄漏

javascript - 在 Jquery 和 PHP 中实现轮询时,Ajax 不会触发

php - 从 openstreetmap 获取城市边界

javascript - Jquery .html() 不工作 - 选择 html

mysql检查数字序列中的间隙

mysql - 如何在 MySQL 中创建更好的搜索查询