Помощь по скриптам | Для тех кто фильтрует числа через if*
Долгое время я сам делал вот такую фильтрацию чисел на PHP.

****
Ход работы:
Если значение в переменной $value более 0 - то скрипт выполняется - если число не проходит - выводит ошибку:

****
А сейчас попробуем вставить в переменную $value значение "10 Привет".

Результат работы:

Как видим - скрипт пропустил данное значение.
****
А сейчас немного теории:
Не будем говорить то что например благодаря такой фильтрации можно пропустить XSS уязвимость, SQL уязвимость.
Столкнулся я с таким:
При вставке значения в базу данных [Поле `money` => тип: Числовое].
Вставляем значение 10.9889.1 [Т. е. две точки]. Я был в шоке если честно то что запрос прошел без ошибок. А в двойном шоке когда увидел что база данных вставило число: "109889" вместо например "10.9889". Думаю сами додумаетесь во что это может выйти...
P. S.:
Если не очень понятно - спрашивайте.

****
Ход работы:
Если значение в переменной $value более 0 - то скрипт выполняется - если число не проходит - выводит ошибку:

****
А сейчас попробуем вставить в переменную $value значение "10 Привет".

Результат работы:

Как видим - скрипт пропустил данное значение.
****
А сейчас немного теории:
Не будем говорить то что например благодаря такой фильтрации можно пропустить XSS уязвимость, SQL уязвимость.
Столкнулся я с таким:
При вставке значения в базу данных [Поле `money` => тип: Числовое].
Вставляем значение 10.9889.1 [Т. е. две точки]. Я был в шоке если честно то что запрос прошел без ошибок. А в двойном шоке когда увидел что база данных вставило число: "109889" вместо например "10.9889". Думаю сами додумаетесь во что это может выйти...
P. S.:
Если не очень понятно - спрашивайте.
полено...
полено...
полезно...
Почитай про if подробнее. Он воспринимает 0 как false. То есть если строка не ровна false, то выполнять действия. Нужно проверять на число is_numeric()
извините за спам. инет заклинил
числа с точкой в int хранится не будут, логично же)