settype() или preg_match при проверке данных из формы?

Страшный Злодей

Бывший член клуба (достало хамство).
settype() или preg_match при проверке данных из формы?

Вопрос возник по поводу того как лучше проверять данные пришедшие из формы. Если ожидаемое значение число, то будет ли, например, следующие проверки равноэффективны:
PHP:
settype($_GET[myvar], "integer")
и
PHP:
preg_match("|^[\d]*$|", $_GET['myvar'])
?
Собственно всегда для проверки на числа приводил к типу 'settype()' , но рассматривая код в чужих скриптах, часто вижу, что делают через 'preg_match'. Нужно ди громоздить регулярки, если значения ожидаются типов integer или float ?
 
Страшный Злодей
settype выкидывает trigger_error в некоторых случаях..

-~{}~ 15.09.07 15:56:

Страшный Злодей
т.к. $_GET['myvar'] может быть не только скалярным ;)
 

Фанат

oncle terrible
Команда форума
не понял, какое отношение settype имеет к проверкам
 

Фанат

oncle terrible
Команда форума
ну так если тебе нужно делать settype, то почему ты удивляешься людям, которым надо проверять?
кому что нужно - тот то и делает.
 

Страшный Злодей

Бывший член клуба (достало хамство).
Фaнат
ну да, вопрос, конечно я не очень хорошо сформулировал, простите великодушно... Меня, на самом деле интересует, остается ли возможность отправить какой-нибудь зловредный код, если он пройдет через фильтр - "settype()" ( для integer или float) ?
 

Армян

Новичок
а чего бы для проверки не воспользоватся
http://php.net/is_numeric
или
http://www.php.net/manual/ru/function.ctype-digit.php
второй вариант для целых :)
 

Фанат

oncle terrible
Команда форума
Не понял вопроса.
что значит - сохранит ли? можно привести пример? вредоносного кода до фильтра и после?
 
Сверху