Forum Webscript.Ru
Программирование => Perl => Тема начата: jsf77 от 17 Ноября 2005, 00:39:43
-
Как предать параметры в perl-скрипт с помощью тега
Знаю что есть что-то типа:
ссылка
Но в таком виде не получается, как правильно передать в скрипт klien=10 и res=sea ?
Тег
-
jsf77
ссылка
Где ты столько кавычек-то видел?
-
Я часто вижу ссылки типа http://www.domain.ru/some/?a=b
каков же здесь механизм передачи параметров ..?
-
Это либо mod_rewrite, либо собственный handler (PerlResponseHandler).
btw, правильным в html будет написание
-
Я плакаль...
Kannabismus
Это либо mod_rewrite, либо собственный handler (PerlResponseHandler).
А я думал что это обычный QUERY_STRING
btw, правильным в html будет написание
Вот это я даже, честно говоря, не знаю как прокомментировать... только рукой махну...
http://www.faqs.org/rfcs/rfc1738.html
http://www.faqs.org/rfcs/rfc1808.html
-
1. Как по вашему этот простой QUERY_STRING заворачивается в скрипт? Вопрос был каков механизм передачи параметров, а не что это такое.
2. Как было сказано, правильным такое написание будет в html, хотя и так понятно, что тег В HTML символ & имеет специальное значение (начинает спецсимвол), что вам и так прекрасно известно. В связи с этим спецификация предусматривает обязательную замену & на & или &.
http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2
-
возможно это простой jawa-script который парсит URL и изменяет его
например
http://domain.com/some/ - это http://domain.com/cgi-bin/some.cgi
ну это только мои предположения
-
Kannabismus
В HTML символ & имеет специальное значение (начинает спецсимвол), что вам и так прекрасно известно.
(С сарказмом) Ой... надо же... а я и не знал...
Может тогда объаснишь, "умник", значение спецсимвола & в URI
Как по вашему этот простой QUERY_STRING заворачивается в скрипт? Вопрос был каков механизм передачи параметров, а не что это такое
Просто так и заворачивается... как параметры переданные GET
-
Phoinix
Насчет & он прав. Браузер преобразовывает его в "&" при передаче в URI.
-
jsf77:
так и пишите:
ссылка
или, учитывая вышенаписанное (по теме и нет) можно написать так:
ссылка
…
use CGI qw(-newstyle_urls);
…
my $q=new CGI;
print $q->header(),\'\',$q->url_param(\'klien\')…;
-
Nudlok:
возможно это простой jawa-script который парсит URL и изменяет его
java ;)
в любом случае вы не правы. Посудите сами - js выполняется на стороне клиента, а адрес вы запрашиваете у сервера. :)
Nudlok:
Я часто вижу ссылки типа http://www.domain.ru/some/?a=b
слёту приходят на ум 2 решения. (наверняка их больше). или Kannabismus:
mod_rewrite
или путем обычного .htaccess в корневой директории, в котором прописана DirectoryIndex cgi-bin/index.cgi
а этот самый index.cgi и обрабатывает QURY_STRING
-
Nudlok:
Я часто вижу ссылки типа http://www.domain.ru/some/?a=b
В апаче
DirectoryIndex index.cgi
вызов скрипта /?pass=qwerty будет передан параметр pass в index.cgi
-
Так и пишу, из html файла все работает нормально, из перл скрипта не получается таким способом параметры передавать. А что тогда делать, если надо вместо кнопок текстовые ссылки?
-
jsf77
покажите код, которым вы их собираете. эти параметры.
jsf77:
из html файла все работает нормально, из перл скрипта не получается
-
судя по всему вы не сможете слету написать свой модуль который за вас будет делать работу.
поэтому используйте:
0. use CGI;
~$ perl -mCPAN -e \'install CGI\'
~$ perldoc CGI
довольно хорошо изложено
1. mod_rewrite (rewritemap) http://cyberperl.ru/index.php?option=com_content&task=view&id=38&Itemid=1 довольно подробно и просто изложено
и на заметку, скрипту _любому_ данные передаются как STDIN, не нужно изобретать велосипед а просто почитать документацию.
если метод GET это QUERY_STRING, если метод POST это STDIN
вопросы? perl-at-ipchains.ru
sub get_args() {
my(%r);
if ($ENV{"REQUEST_METHOD"} eq "GET") {
$ENV{"QUERY_STRING"} =~ tr/+/ /;
$ENV{"QUERY_STRING"} =~ s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge
;
my(@params) = split("&",$ENV{"QUERY_STRING"});
for ($i = 0;$i < scalar(@params);$i++) {
($option,$value) = split("=",$params[$i]);
$r{$option}=$value;
}
}
if ($ENV{"REQUEST_METHOD"} eq "POST") {
read(STDIN,$temp,$ENV{"CONTENT_LENGTH"});
$temp =~ tr/+/ /;
$temp =~ s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge;
my(@params) = split("&",$temp);
for ($i = 0;$i < scalar(@params);$i++) {
($option,$value) = split("=",$params[$i]);
$r{$option}=$value;
}
}
return %r;
}
-
ipchains
немала вероятность того, что кто нибудь возьмёт данный код и использует. это может показаться проще чем чтение документаций к cpan модулям
результатом будет предельно кривой разбор параметров, т.к. скрипт не рабочий
-
этот скрипт, вернее эту часть я пользую уже довольно продолжительное время.
прекрасно работает.
если внимательно посмотрите на скрипт который я привел - там есть sub get_args -> вызывать надо сабу
-
ну что же,
приведу часто используемую цитату на данном форуме: "изобретение велосипеда не преследуется по закону" ;)
-
ondr:
ну что же,
приведу часто используемую цитату на данном форуме: "изобретение велосипеда не преследуется по закону"
похоже вы решили меня преследовать ... (: