Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Формы в пхп
цитата
15/04/14 в 20:59
 Lexikon
Нужно передать через форму в скрипт пхп целое число
разумеется делаю проверку, чтоб в скрипт попадали только числа

if (!is_int($request)) {
   exit("Введите число!");
}

В любом случае выдает что это не число.
Как можно решить такой момент?

Есть мысль, что можно с помощью регулярки [^0-9] фильтрануть запрос, тогда если введут что либо кроме числа на выходе получим пустой запрос, поэтому делаем делаем проверку и выдаем что то типа Введите правильный запрос.

Может где то не прав, подскажите.
Спасибо!
цитата
15/04/14 в 21:25
 Nux
is_numeric
цитата
15/04/14 в 21:41
 ibiz
Nux писал:
is_numeric


только он шестнадцатеричные проверяет тоже вроде, то есть 0xaa будет true, и дробные тоже 10.5 = true
цитата
15/04/14 в 21:50
 Lexikon
это верно, а с поавающей точкой меня неустраивает, только целочисленные.
Выходит только через фильтрацию регуляркой и проверку.

Или я вот сейчас глфнул есть возможность работы с паттернами
http://htmlbook.ru/html/input/pattern
Проверю.
Но что то все равно больше доверия к регулярке в пхп icon_smile.gif
цитата
15/04/14 в 22:06
 Nux
ibiz писал:
только он шестнадцатеричные проверяет тоже вроде, то есть 0xaa будет true, и дробные тоже 10.5 = true



совершенно верно, не заметил про целые,.. ну тут если так то регулярка практичнее
цитата
15/04/14 в 22:07
 ibiz
Lexikon писал:
это верно, а с поавающей точкой меня неустраивает, только целочисленные.
Выходит только через фильтрацию регуляркой и проверку.

Или я вот сейчас глфнул есть возможность работы с паттернами
http://htmlbook.ru/html/input/pattern
Проверю.
Но что то все равно больше доверия к регулярке в пхп icon_smile.gif


патерны только для html5, и прямые реквесты они не фильтруют
цитата
15/04/14 в 22:09
 Nux
Lexikon писал:


Или я вот сейчас глфнул есть возможность работы с паттернами


избегай такую возможность без перепроверки в ПХП
цитата
16/04/14 в 00:01
 Iceworld
Валидация на js типа test
цитата
16/04/14 в 00:55
 Mika
Lexikon писал:
В любом случае выдает что это не число.

Само собой это не число. Мануал-то читал?
Цитата:
is_int — Проверяет, является ли переменная переменной целочисленного типа

Так что как вариант, используй ctype_digit или (int)$var.
цитата
16/04/14 в 01:00
 idk2045
Код:
if (!ctype_digit($request)) {
   exit("Введите целое число!");
}
цитата
16/04/14 в 01:44
 AWD
Lexikon писал:
if (!is_int($request))
if(!is_int((int)$request)) так надо smail101.gif шутка.
а вообще победил грозный smail54.gif
только для грозности нужно die("Введите целое число!"); icon_evil.gif smail101.gif
цитата
16/04/14 в 07:31
 freeek
из формы данные приходят в виде строк.)
цитата
16/04/14 в 09:57
 VulkanPartner
Все верно, правильный ответ выше был: (int)$var
Кроме того, удобно, что такой вариант текст на лету превращает в 0. И не нужно писать доп. проверку на текст (если не предполагается, что 0 одно из корректных значений).
цитата
16/04/14 в 17:28
 idk2045
VulkanPartner писал:
Все верно, правильный ответ выше был: (int)$var

(int)"qqq" вернет 0, и в базу занесется ноль, хотя юзер ввел qqq. это не правильно smail101.gif
цитата
16/04/14 в 21:09
 AWD
grozny писал:
(int)"qqq" вернет 0, и в базу занесется ноль, хотя юзер ввел qqq. это не правильно smail101.gif
в базу фбр? фсб? цру? или разведки какой? так это охуенно! smail101.gif
цитата
17/04/14 в 13:42
 VulkanPartner
grozny писал:
(int)"qqq" вернет 0, и в базу занесется ноль, хотя юзер ввел qqq. это не правильно smail101.gif

Изначально вопрос стоял "чтоб в скрипт попадали только числа". И зачастую в большинстве случаев подразумеваются числа от 1 и выше. Поэтому я так и ответил, что иногда, когда вернет "0" - как раз удобно! smail54.gif
цитата
18/04/14 в 08:35
 freeek
grozny писал:
(int)"qqq" вернет 0, и в базу занесется ноль, хотя юзер ввел qqq. это не правильно smail101.gif


icon_smile.gif Валидацию никто не отменял, если данные не верные, ничего в базу писать не надо, а надо сообщить пользователю чтобы ввел верные данный в поле с неверными данными)


Эта страница в полной версии