- тип данных, строка это или массив, целые числа или с точкой и т.д.;
- допустимые символы: ctype-функции или для более сложных проверок - регулярные выражения;
- проверка формата: filter_var или регулярные выражения;
- проверка наличие данных или ограничений, например принимать только строки от 10 до 20 символов или числа от 10 до 100;
- логические проверки и проверки что бы не было неоднозначности, типа +0, 0 и -0 и т.д.
пример того что валидатор может не сработать:
// Пример как проверять
function checkIntRange($int, $min, $max) {
if (is_string($int) && !ctype_digit($int)) {
return false; // содержит нецифровые символы
}
if (!is_int((int) $int)) {
return false; // другое не целое значение или больше PHP_MAX_INT
}
return ($int >= $min && $int <= $max);
}
// а вот так никогда не проверяйте
function checkIntRangeWrong($int, $min, $max) {
return ($int >= $min && $int <= $max);
}
assert(checkIntRange("6' OR 1=1", 5, 10)); //вернёт NULL/Выдаст предупреждение
assert(checkIntRangeWrong("6' OR 1=1", 5, 10)); //ошибочно вернёт TRUE
assert(0 == '0ABC'); //возвращает TRUE
assert(0 == 'ABC'); //возвращает TRUE (даже без цифры в начале!)
assert(0 === '0ABC'); //возвращает NULL/Выдаёт предупреждение о невозможности проверить утверждение