как проверить входной аргумент на принадлежность диапазону 1-17?
Скрипт вызывается стандартно:
down.php?f=1
f у меня должно быть 1 или 2, или 3,... или 17, в скрипте из этого f формируется имя файла,
(типа file-1.txt, file-2.txt и т.п.)
как в скрипте проверить корректность переданного аргумента?
Вот это не проходит: if ( ($f>=0) and ($f<=17) ) {...}
для нее одинково что down.php?f=1
что down.php?f=1рвоырв
Спустя 2 минуты, 26 секунд (27.03.2011 - 17:27) Trianon написал(а):
потому что переменной $f не присвоено значение.
Включите диагностику ошибок - Вы работаете вслепую.
Включите диагностику ошибок - Вы работаете вслепую.
Спустя 3 минуты, 48 секунд (27.03.2011 - 17:31) sdsdsd написал(а):
Цитата (Trianon @ 27.03.2011 - 14:27) |
потому что переменной $f не присвоено значение. |
Как это не присвоено? При вызове скрипта все присваивается. :-)
Спустя 19 минут, 16 секунд (27.03.2011 - 17:51) Trianon написал(а):
Да вот так. Не присвоено.
Ну и перед тем, как проверять попадание в диапазон, стоит проверить, что значение является записью числа, а не произвольного текста.
Ну и перед тем, как проверять попадание в диапазон, стоит проверить, что значение является записью числа, а не произвольного текста.
Спустя 2 минуты, 48 секунд (27.03.2011 - 17:53) sdsdsd написал(а):
Цитата (Trianon @ 27.03.2011 - 14:51) |
Да вот так. Не присвоено. Ну и перед тем, как проверять попадание в диапазон, стоит проверить, что значение является записью числа, а не произвольного текста. |
Вот я и спрашиваю - как?
Спустя 40 секунд (27.03.2011 - 17:54) minok94 написал(а):
Для того чтоб присвоить гет параметр нужно:
На сколько я понял должно быть так.
$f = $_GET['f'];
if(is_int($f)) // Проверяем является ли параметр цифрой
{
if (($f>=0) and ($f<=17) )
{...}
}else{
echo "Передан недопустимый параметр";
}
На сколько я понял должно быть так.
Спустя 1 минута, 2 секунды (27.03.2011 - 17:55) Белый Тигр написал(а):
Вначале делаем
$f = (int) $_GET['f']и после этого
if ( $f > 0 AND $f<=17 ) {...}
Спустя 5 минут, 26 секунд (27.03.2011 - 18:00) minok94 написал(а):
Цитата (Белый Тигр @ 27.03.2011 - 14:55) |
Вначале делаем $f = (int) $_GET['f']и после этого if ( $f > 0 AND $f<=17 ) {...} |
Не согласен, если передается такой параметр: index.php?f=dgjigu, то получится неопределенный результат.
Спустя 1 минута, 40 секунд (27.03.2011 - 18:02) sdsdsd написал(а):
Цитата (minok94 @ 27.03.2011 - 14:54) |
Для того чтоб присвоить гет параметр нужно: [php]$f = $_GET['f']; if(is_int($f)) // Проверяем является ли параметр цифрой |
Проверил, не работает даже на правильные параметры.
Спустя 47 секунд (27.03.2011 - 18:03) Trianon написал(а):
minok94
почему неопределенный.
После (int) ноль получится.
if выполнен не будет.
почему неопределенный.
После (int) ноль получится.
if выполнен не будет.
Спустя 1 минута, 54 секунды (27.03.2011 - 18:05) Trianon написал(а):
sdsdsd
можете проверить от обратного.
$f = (int) $_GET['f'];
if($_GET['f'] === "$f" ) ...
можете проверить от обратного.
$f = (int) $_GET['f'];
if($_GET['f'] === "$f" ) ...
Спустя 13 минут, 35 секунд (27.03.2011 - 18:18) sdsdsd написал(а):
Цитата (Белый Тигр @ 27.03.2011 - 14:55) |
Вначале делаем $f = (int) $_GET['f']и после этого if ( $f > 0 AND $f<=17 ) {...} |
Вот это заработало. Правда неожиданно, но сойдет:
он из 01 делает 1,
из 1орваорв делает 1,
14джбджб делает 14
Спасибо, сойдет! Враг не пройдет! :-)))
Спустя 6 часов, 24 минуты, 16 секунд (28.03.2011 - 00:43) Белый Тигр написал(а):
minok94 , ну для таких ситуаций просто добавляется else и там делается всё что нужно. В начале же просто просили проверить принадлежность диапазону
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)