Главная страница


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Andrey Sapozhnikov                   2:5020/400     18 Aug 2000  04:04:34
 To : All
 Subject : Re: counter
 -------------------------------------------------------------------------------- 
 
 sto пишет в сообщении <8ngcap$2mj$1@kmk.kemerovo.su> ...
 
 >Уже некоторое время пользуюсь скриптиком и вот приспичило
 >вместо одного параметра отсылать два, ну и написал:
 >"/cgi-bin/counter.cgi?data/count.txt&1" и скрипт перестал работать.
 >Глядя в него увидел следующее:
 >...
 >if ($ARGV[0] ne "")
 >
 >   $countfile=$ARGV[0];
 >}
 >if ($ARGV[1] ne "")
 >
 >   $table=$ARGV[1];
 >}
 >...
 >И вот возник вопрос разве так выбираются параметры из строки URL?
 >Если можно и так, то какой разделитель надо ставить?
 Бывают письма на которые не знаешь как и ответить... Все не просто
 неправильно, а неправильно на несколько уровней вглубь.
 
 Во-первых: даже если параметры и передавались бы в коммандной
 строке (чего известные мне серверы не делают, а если бы и делали -
 это было бы их частным отступлением от стандарта CGI), то
 отсутствие параметра не есть пустая строка. Мало того - это даже не
 undef (хотя на defined проверять можно) - это просто отсутствие
 элементов в массиве @ARGV.
 
 Во-вторых: при передаче параметров методом GET (а судя по URL,
 так оно и есть), параметры передаются в переменной окружения
 QUERY_STRING. То есть доставать их надо:
 my ($countfile,$table)=split /&/,$ENV{QUERY_STRING};
 
 В-третьих: скоро понадобится ввести третий. Потом четвертый. Потом первый и
 второй сделать опциональными... Лучше с самого начала приучаться к
 именованным параметрам типа key=value, RFC не запрещает использование
 неименованных, но зачем создавать себе трудности.
 
 В-четвертых: часть символов не может быть использована в URL. И
 посему при передаче заменяется на последовательность %nn где
 nn - две шестнадцатеричные цифры. Т.е. в общем случае (а нигде
 не указано обратного), мы должны произвести еще и обратное
 преобразование.
 
 В-пятых: вы уже созрели чтоб набрать perldoc CGI (если нужно
 действительно написать скрипт) или прочесть доку по URL,HTTP,CGI...
 в общем целая пачка RFC, всех номеров навскидку не припомню
 (это если действительно интересно как оно все работает).
 
 В-шестых: но даже модуль CGI не спасет Вас если кто-то
 передаст первым параметром не data/count.txt, а скажем
 /etc/passwd...
 
 Андрей
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: counter   Andrey Sapozhnikov   18 Aug 2000 04:04:34 
Архивное /ru.cgi.perl/657762978167.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional