|
|
|
| Здравствуйте.
Давно хотел написать, но находил ответы на форуме и в книжках. Но возник вопрос почти во всех книжках рекомендуется проверять данные получаемые методом гет и пост (допустим идентификатора рублики) при помощи скрипта
if(!preg_match("|^[\d]+$|",$_GET['id_rub']))
{
exit("недопустимый формат запроса.");
}
Почти во всех книжках пишется, что регулярные выражения (в скриптах) могут тормозить сайт. Я видел в одном скрипте следующее
$id_cat = intval($_GET['id_cat'];
вопрос будет ли такой код безопасен и быстр по сравнению с предидущим? | |
|
|
|
|
|
|
|
для: easywind
(06.03.2007 в 15:33)
| | Я делаю прмерно так
$id_cat = (is_int($_GET['id_cat']) || (int)$_GET['id_cat']>0)?(int)$_GET['id_cat']:1; | |
|
|
|
|
|
|
|
для: t4f
(06.03.2007 в 15:41)
| | про проверку 0 я и забыл :)
тогда проще так наверно
if($_GET['id_cat'] > 0) intval($_GET['id_cat']); | |
|
|
|
|
|
|
|
для: easywind
(06.03.2007 в 16:04)
| |
if($_GET['id_cat'] > 0) intval($_GET['id_cat']);
|
Такой оператор не сделает ничего. | |
|
|
|
|
|
|
|
для: Trianon
(07.03.2007 в 10:34)
| | if($_GET['id_cat'] > 0) $id_cat = intval($_GET['id_cat']);
if($_GET['id_cat'] > 0) {
$id_cat = intval($_GET['id_cat']);
// дальнейшая работа
} | |
|
|
|
|
|
|
|
для: easywind
(11.03.2007 в 14:26)
| | Вначале проверяйте на тип. | |
|
|
|
|
|
|
|
для: easywind
(06.03.2007 в 15:33)
| | Да, такой код будет безопасен.
PS Замедление при использовании регулярных выражений наблюдается в случае сложных выражений, анализирующих объемный текст, проверить тот факт, является ли пару символов цифрами или нет не сложно и не долго. | |
|
|
|