Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 15/04/14 в 20:59 |
Нужно передать через форму в скрипт пхп целое число
разумеется делаю проверку, чтоб в скрипт попадали только числа
Код: [развернуть] |
if (!is_int($request)) {
exit("Введите число!");
}
|
В любом случае выдает что это не число.
Как можно решить такой момент?
Есть мысль, что можно с помощью регулярки [^0-9] фильтрануть запрос, тогда если введут что либо кроме числа на выходе получим пустой запрос, поэтому делаем делаем проверку и выдаем что то типа Введите правильный запрос.
Может где то не прав, подскажите.
Спасибо!
|
|
|
|
tuberotator.com
С нами с 12.09.06
Сообщения: 804
Рейтинг: 1478
|
Добавлено: 15/04/14 в 21:25 |
is_numeric
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 15/04/14 в 21:41 |
только он шестнадцатеричные проверяет тоже вроде, то есть 0xaa будет true, и дробные тоже 10.5 = true
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 15/04/14 в 21:50 |
это верно, а с поавающей точкой меня неустраивает, только целочисленные.
Выходит только через фильтрацию регуляркой и проверку.
Или я вот сейчас глфнул есть возможность работы с паттернами
http://htmlbook.ru/html/input/pattern
Проверю.
Но что то все равно больше доверия к регулярке в пхп
|
|
|
|
tuberotator.com
С нами с 12.09.06
Сообщения: 804
Рейтинг: 1478
|
Добавлено: 15/04/14 в 22:06 |
ibiz писал: | только он шестнадцатеричные проверяет тоже вроде, то есть 0xaa будет true, и дробные тоже 10.5 = true |
совершенно верно, не заметил про целые,.. ну тут если так то регулярка практичнее
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 15/04/14 в 22:07 |
Lexikon писал: | это верно, а с поавающей точкой меня неустраивает, только целочисленные.
Выходит только через фильтрацию регуляркой и проверку.
Или я вот сейчас глфнул есть возможность работы с паттернами
http://htmlbook.ru/html/input/pattern
Проверю.
Но что то все равно больше доверия к регулярке в пхп |
патерны только для html5, и прямые реквесты они не фильтруют
|
|
|
|
tuberotator.com
С нами с 12.09.06
Сообщения: 804
Рейтинг: 1478
|
Добавлено: 15/04/14 в 22:09 |
Lexikon писал: |
Или я вот сейчас глфнул есть возможность работы с паттернами
|
избегай такую возможность без перепроверки в ПХП
|
|
|
|
С нами с 10.07.03
Сообщения: 1425
Рейтинг: 1288
|
Добавлено: 16/04/14 в 00:01 |
Валидация на js типа test
|
|
|
|
С нами с 18.10.02
Сообщения: 4165
Рейтинг: 3365
|
Добавлено: 16/04/14 в 00:55 |
Lexikon писал: | В любом случае выдает что это не число. |
Само собой это не число. Мануал-то читал?
Цитата: | is_int — Проверяет, является ли переменная переменной целочисленного типа |
Так что как вариант, используй ctype_digit или (int)$var.
|
|
|
|
С нами с 27.09.03
Сообщения: 5454
Рейтинг: 2506
|
Добавлено: 16/04/14 в 01:00 |
Код: | if (!ctype_digit($request)) {
exit("Введите целое число!");
} |
|
|
|
|
С нами с 03.02.11
Сообщения: 842
Рейтинг: 301
|
Добавлено: 16/04/14 в 01:44 |
Lexikon писал: | if (!is_int($request)) |
if(!is_int((int)$request)) так надо шутка.
а вообще победил грозный
только для грозности нужно die("Введите целое число!");
|
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 16/04/14 в 07:31 |
из формы данные приходят в виде строк.)
|
|
|
|
С нами с 27.03.14
Сообщения: 201
Рейтинг: 169
|
Добавлено: 16/04/14 в 09:57 |
Все верно, правильный ответ выше был: (int)$var
Кроме того, удобно, что такой вариант текст на лету превращает в 0. И не нужно писать доп. проверку на текст (если не предполагается, что 0 одно из корректных значений).
|
|
Perestroika Affiliates - легендарная гемблинг-партнерка №1.
|
9
|
|
|
С нами с 27.09.03
Сообщения: 5454
Рейтинг: 2506
|
Добавлено: 16/04/14 в 17:28 |
VulkanPartner писал: | Все верно, правильный ответ выше был: (int)$var |
(int)"qqq" вернет 0, и в базу занесется ноль, хотя юзер ввел qqq. это не правильно
|
|
|
|
С нами с 03.02.11
Сообщения: 842
Рейтинг: 301
|
Добавлено: 16/04/14 в 21:09 |
grozny писал: | (int)"qqq" вернет 0, и в базу занесется ноль, хотя юзер ввел qqq. это не правильно |
в базу фбр? фсб? цру? или разведки какой? так это охуенно!
|
|
|
|
С нами с 27.03.14
Сообщения: 201
Рейтинг: 169
|
Добавлено: 17/04/14 в 13:42 |
grozny писал: | (int)"qqq" вернет 0, и в базу занесется ноль, хотя юзер ввел qqq. это не правильно |
Изначально вопрос стоял "чтоб в скрипт попадали только числа". И зачастую в большинстве случаев подразумеваются числа от 1 и выше. Поэтому я так и ответил, что иногда, когда вернет "0" - как раз удобно!
|
|
Perestroika Affiliates - легендарная гемблинг-партнерка №1.
|
0
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 18/04/14 в 08:35 |
grozny писал: | (int)"qqq" вернет 0, и в базу занесется ноль, хотя юзер ввел qqq. это не правильно |
Валидацию никто не отменял, если данные не верные, ничего в базу писать не надо, а надо сообщить пользователю чтобы ввел верные данный в поле с неверными данными)
|
|
|
|