[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Крохотный вопрос
sdsdsd
Подскажите пожалуйста, любителю -

как проверить входной аргумент на принадлежность диапазону 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 выполнен не будет.

Спустя 1 минута, 54 секунды (27.03.2011 - 18:05) Trianon написал(а):
sdsdsd
можете проверить от обратного.
$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
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.