试图阻止textareas中的项目符号作为特殊字符输入我的数据库

时间:2012-07-26 17:14:01

标签: php mysql insert escaping special-characters

我目前正在使用它,但它似乎不适用于子弹:

function sanitizeMySQL($var){
        $var = mysql_real_escape_string($var);
        $var = sanitizeString($var);
        return $var;
}

function sanitizeString($var)
{
    $var = str_replace('•','•', $var);
    $var = htmlentities($var);
    $var = strip_tags($var);
    return $var;
}

在有人通过textarea提交后,这就是我的数据库中出现的子弹:

•

编辑:这就是我现在所获得的:•

我确实有子弹存储在我的数据库中,所以我知道它允许它们。有没有正确的方法来存储拉丁-1编码的子弹?

1 个答案:

答案 0 :(得分:2)

通过表单和源代码提交的数据没有相同的编码。因此,源代码中的•字符与实际数据中的字符不匹配。因此它们不会被替换。统一通用编码。请参阅Handling Unicode Front To Back In A Web App

此外,您的消毒策略非常奇怪。我不知道你对“”“有什么,这不应该在一般的”消毒“功能中被取代。此外,您首先是HTML转义所有内容,然后正在剥离标记。提示:转义后不再有任何标签。接下来,在SQL转义后,您不应再修改字符串。请参阅The Great Escapism (Or: What You Need To Know To Work With Text Within Text)