Моя дезинфицирующая функция $ _POST [] также очищает турецкие символы

Я нашел в сети функцию для очистки входных данных пользователя и использовал ее для создания альтернативы $_POST[] метод как post() , Однако, похоже, что эта функция также дезинфицирует символы UTF-8, такие как ç, ş, ö, ı, I, O, G, превращая их в строки, как ö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;
}
}

3

Решение

Глядя на руководство Я думаю, вам нужно добавить несколько дополнительных параметров в ваш вызов 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);
}
2

Другие решения

Я нашел альтернативное решение, которое заключается в использовании htmlspecialchars() против htmlentities() для моего случая. Справочный вопрос: htmlentities () против htmlspecialchars ()

0

По вопросам рекламы [email protected]