function intfix($i)
{
$i = preg_replace('/[^\d]/', '', $i);
if (!strlen($i))
$i = 0;
return $i;
}
function textfix($text = ""){
if(!is_array($text)){ $text = htmlentities($text,ENT_QUOTES,"UTF-8");
}
return $text;
}
Эти две функции фильтруют все пользовательские переменные. Как вы думаете, это достаточно безопасно?
Я немного запутался в кодировке символов. Я хочу, чтобы мои пользователи могли поиграть с искусством ACII и использовать любые символы, которые они хотят, но на данный момент это кажется невозможным. Что нужно сделать? Это может быть связано с кодировкой таблицы и моими функциями.
EDIT:
Цифры на самом деле очень большие. Иногда в триллионах.
Это пример того, как я фильтрую пользовательский ввод:
if($_GET['number']){ $number = intfix($_GET['number']); }
if($_GET['text']){ $text = textfix($_GET['text']); }'
Это ошибка, о которой вы говорите?
Кроме того, вот как я их фильтрую перед вставкой в БД:
function filter($input,$s=1){
$input = strip_tags($input, "");
$input = str_replace("\n", "<br />", $input);
if($s == 1){$input = bbcode($input); } // smileys and bbcode
$input = textWrap($input); // wordwrap without breaking html
return $input;
}
function unfilter($input){ // to unfilter in case I need to show the text in a textbox
$input = html_entity_decode($input,ENT_QUOTES,"UTF-8");
$input = str_replace("<br />", "\n", $input);
return $input;
}