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
Проверю.
Но что то все равно больше доверия к регулярке в пхп
цитата
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
Проверю.
Но что то все равно больше доверия к регулярке в пхп
патерны только для 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)) так надо
шутка.
а вообще победил грозный
только для грозности нужно die("Введите целое число!");
цитата
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. это не правильно
цитата
16/04/14 в 21:09
AWD
grozny писал:
(int)"qqq" вернет 0, и в базу занесется ноль, хотя юзер ввел qqq. это не правильно
в базу фбр? фсб? цру? или разведки какой? так это охуенно!
цитата
17/04/14 в 13:42
VulkanPartner
grozny писал:
(int)"qqq" вернет 0, и в базу занесется ноль, хотя юзер ввел qqq. это не правильно
Изначально вопрос стоял
"чтоб в скрипт попадали только числа"
. И зачастую в большинстве случаев подразумеваются числа от 1 и выше. Поэтому я так и ответил, что иногда, когда вернет "0" - как раз удобно!
цитата
18/04/14 в 08:35
freeek
grozny писал:
(int)"qqq" вернет 0, и в базу занесется ноль, хотя юзер ввел qqq. это не правильно
Валидацию никто не отменял, если данные не верные, ничего в базу писать не надо, а надо сообщить пользователю чтобы ввел верные данный в поле с неверными данными)
Новая тема
Ответить
Эта страница в полной версии