我目前正在使用它,但它似乎不适用于子弹:
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编码的子弹?
答案 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)。