我的清理 $_POST[] 函数也清理了土耳其字符
My sanitizing $_POST[] function also sanitizes Turkish characters
我在网上找到了一个功能来清理用户输入数据,并用它来创建 $_POST[]
方法的替代方法 post()
。然而,这个函数似乎也清理了 UTF-8 字符,例如 ç,ş,ö,ı,İ,Ö,ğ,将它们转换成字符串,例如 Ã ¶l。我不知道代码的哪一部分是这样做的。
提前致谢。
消毒功能
function post($key) {
if (isset($_POST[$key])) {
$data = $_POST[$key];
if (is_array($data)) {
foreach ($data as $key => $element) {
$data[$key] = filter($element);
}
} else {
$data = trim(htmlentities(strip_tags($data)));
if(get_magic_quotes_gpc())
$data = stripslashes($data);
$data = pg_escape_string($data);
}
return $data;
} else {
return false;
}
}
查看 manual 我认为您需要向 htmlentities 调用添加一些额外的参数,以让它知道您正在使用 UTF-8 编码的字符串。
这是一个可能的解决方案,为了清楚起见,我将相关部分分解到了一个单独的函数中。
function post($key){
if (isset($_POST[$key])){
$post = $_POST[$key];
if (is_array($post)) {
$data = array();
foreach ($post as $key => $element) {
$data[$key] = filter($element);
}
} else {
$data = formatHtmlEntities($post);
}
return $data;
}
return false;
}
function formatHtmlEntities($data)
{
$stripTags = strip_tags($data);
$entityEncodedData = trim(htmlentities($stripTags, ENT_QUOTES, "UTF-8"));
if (get_magic_quotes_gpc()) {
$entityEncodedData = stripslashes($entityEncodedData);
}
return pg_escape_string($entityEncodedData);
}
我找到了另一种解决方案,即针对我的情况使用 htmlspecialchars()
与 htmlentities()
。参考问题:htmlentities() vs. htmlspecialchars()
我在网上找到了一个功能来清理用户输入数据,并用它来创建 $_POST[]
方法的替代方法 post()
。然而,这个函数似乎也清理了 UTF-8 字符,例如 ç,ş,ö,ı,İ,Ö,ğ,将它们转换成字符串,例如 Ã ¶l。我不知道代码的哪一部分是这样做的。
提前致谢。
消毒功能
function post($key) {
if (isset($_POST[$key])) {
$data = $_POST[$key];
if (is_array($data)) {
foreach ($data as $key => $element) {
$data[$key] = filter($element);
}
} else {
$data = trim(htmlentities(strip_tags($data)));
if(get_magic_quotes_gpc())
$data = stripslashes($data);
$data = pg_escape_string($data);
}
return $data;
} else {
return false;
}
}
查看 manual 我认为您需要向 htmlentities 调用添加一些额外的参数,以让它知道您正在使用 UTF-8 编码的字符串。
这是一个可能的解决方案,为了清楚起见,我将相关部分分解到了一个单独的函数中。
function post($key){
if (isset($_POST[$key])){
$post = $_POST[$key];
if (is_array($post)) {
$data = array();
foreach ($post as $key => $element) {
$data[$key] = filter($element);
}
} else {
$data = formatHtmlEntities($post);
}
return $data;
}
return false;
}
function formatHtmlEntities($data)
{
$stripTags = strip_tags($data);
$entityEncodedData = trim(htmlentities($stripTags, ENT_QUOTES, "UTF-8"));
if (get_magic_quotes_gpc()) {
$entityEncodedData = stripslashes($entityEncodedData);
}
return pg_escape_string($entityEncodedData);
}
我找到了另一种解决方案,即针对我的情况使用 htmlspecialchars()
与 htmlentities()
。参考问题:htmlentities() vs. htmlspecialchars()