Проблема с settype()

Вася

Новичок
Проблема с settype()

Есть проверка значений из формы, в которой используется функция settype(). Помучившись некоторое время, понял, что она выдает единицу в любом случае - без разницы, были ранее введены буквы или цифры. Кто-нибудь раньше сталкивался с подобным, и как это можно обойти?
 

Вася

Новичок
Ну да - приводит значение к какому-либо типу
пример:

settype($param1, "integer")

и если у меня $param1 что-то типа "aaaa", и если "1234" - результат одинаковый - единица :(
 

Вася

Новичок
хе..
очень странно, что она строку к числу приводит.....
А как же тогда проверять тип введенных значений - нужно отсеивать только числа?
Подскажите плз....
 

Shturm

Гигант мысли
Не нужно проверять тип.
Нужно проверять, находятся ли введенные значения в пределе допустимых.

Напр, если $_GET['id'] должен быть integer'ом, то settype($_GET['id']),
иди $id = (int)$_GET['id'];
Если строка не является числом (сорри за каламбур), то получаем 0.
Если мы ноля не ожидаем, то констатируем неверность введенных данных.
Если ноль допустим - работаем с нулем.

Вот и все.

Конечно, если нужно принципиальное соответствие строки шаблону "только цифры", и тп
то это - регулярные выражения (или !==0) - вобщем - зависит от задачи.
Но в остальных случаях у меня лично вполне прокатывает вышеописанный способ.
 

Shturm

Гигант мысли
На сервер передаются СТРОКОВЫЕ данные.
Именно поэтому имеет смысл проверять их на соответствие иным критериям нежели тип.
 
Сверху