Forum Webscript.Ru
Программирование => Perl => Тема начата: Yuraz от 22 Апреля 2002, 09:20:15
-
Передаю данные GET\'ом
http://127.0.0.1/cgi-bin/test_get2.pl?action=20
а можно ещё в этот же скрипт, по этому URL, передать данные из формы?
Т.е. есть форма с примерно таким описанием
Если да, то как обработать?
Сейчас обрабатываю просто GET так:
if ($ENV{\'REQUEST_METHOD\'} eq "POST")
{
read(STDIN, $bufer, $ENV{\'CONTENT_LENGTH\'});
}
elsif ($ENV{\'REQUEST_METHOD\'} eq "GET")
{
$bufer=$ENV{\'QUERY_STRING\'};
}
@pairs = split(/&/, $bufer);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$name =~ s/%([A-Fa-f0-9]{2})/pack("c",hex($1))/ge;
$value =~ s/%([A-Fa-f0-9]{2})/pack("c",hex($1))/ge;
$input{$name} = $value;
}
Заранее спасибо!
-
У тебя универсальный скрипт обработки.Он у тебя читает как POST так и GET.
Не вижу проблем :)
Хочешь передавай POST а Хочешь GET.
-
Тут немного не так надо писать
-
У тебя универсальный скрипт обработки.Он у тебя читает как POST так и GET.
-
Нет, ну так-конечно Oops :) но
для передачи простых данных типа action=20 user_id=крутой_юзер анекдот=номер23178 вполне достаточно
if ($ENV{\'REQUEST_METHOD\'} eq "POST")
{
read(STDIN, $bufer, $ENV{\'CONTENT_LENGTH\'});
}
elsif ($ENV{\'REQUEST_METHOD\'} eq "GET")
{
$bufer=$ENV{\'QUERY_STRING\'};
}
@pairs = split(/&/, $bufer);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$name =~ s/%([A-Fa-f0-9]{2})/pack("c",hex($1))/ge;
$value =~ s/%([A-Fa-f0-9]{2})/pack("c",hex($1))/ge;
$input{$name} = $value;
}
:beer:
-
для передачи простых данных типа action=20 user_id=крутой_юзер анекдот=номер23178 вполне достаточно
А когда данные усложняться? Скрипт будешь переписывать типа?
Изобретение велосипеда не преследуется по закону.:))
-
Т.е. есть форма с примерно таким описанием
Если да, то как обработать?
Как у тебя написано, так и обработать. Сейчас у тебя будет обрабатываться POST часть. Но никто не мешает отдельно обработать $ENV{\'QUERY_STRING\'}, который все равно доступен, даже если данные пережавались постом.
-
Если со скрытым полем, то думал уже об этом, так и сделаю. Страницы буду вызывать методом GET, а формы сформировывать с срытыми полями для POST. У меня задача такая, скрипт один, а выдаёт много, на половину разных страниц, плюс разные формы на этих страницах...
-
Передаю данные GET\'ом
http://127.0.0.1/cgi-bin/test_get2.pl?action=20
;)
нет, конечно может я что-то не понял., но как только человек ткнет по такой ссылке (с передачей GET параметров), то никакой друго формы (POST или другой GET) обрабатываться ИМХО не будет :) просто данные не будут передаваться - передастся только то, что со ссылкой.
И с другой стороны - если ткнуть по кнопке в форме POST, то не будут передаваться данные из других форм.
-
Уж сколько раз твердили миру - используйте CGI.
Весь в дырах и тормозной ?!?!?!?
-
Весь в дырах и тормозной ?!?!?!?
Это кто тебе сказал?
-
>>как только человек ткнет по такой ссылке (с передачей GET параметров), то никакой друго формы (POST или другой GET) обрабатываться ИМХО не будет
Конечно не будет. Форма должна быть одна, POST. При этом все поля формы уйдут постом, но в action можно написать не просто имя скрипта, а имя скрипта с дополнительными параметрами (аналог GET). Эти параметры не будут доступны для обычной обработки формы, потому что форма POST и обрабатываются только параметры полей формы. Но параметры строки запроса (то что стоит после ? в action) можно выловить из $ENV{\'QUERY_STRING\'} и обработать отдельно. Зачем это нужно непонятно, но если человеку надо, значит надо...
-
тут в конкретном случае вообще ничего работать не будет
цитирую
-
У меня работает. Хотя, если честно, я просто скопировал этот код из самого первого сообщения, не проверяя. Сейчас проверил, работает.