Forum Webscript.Ru

Программирование => Perl => Тема начата: Yuraz от 22 Апреля 2002, 09:20:15

Название: Передаю GET\'ом, можно ли ещё POST туда же?
Отправлено: 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;
      }

Заранее спасибо!
Название: Передаю GET\'ом, можно ли ещё POST туда же?
Отправлено: ESE от 22 Апреля 2002, 10:53:06
У тебя универсальный скрипт обработки.Он у тебя читает как POST так и GET.
Не вижу проблем :)
Хочешь передавай POST а Хочешь GET.
Название: Передаю GET\'ом, можно ли ещё POST туда же?
Отправлено: ESE от 22 Апреля 2002, 12:18:33
Цитировать

Тут немного не так надо писать

 
 
Название: Передаю GET\'ом, можно ли ещё POST туда же?
Отправлено: Chs от 22 Апреля 2002, 12:42:40
Цитировать
У тебя универсальный скрипт обработки.Он у тебя читает как POST так и GET.


Oops! :))

Уж сколько раз твердили миру - используйте CGI.

Если уж очень нужны параметры в хеше, то
use CGI qw(:cgi-lib);
&ReadParse();
Название: Передаю GET\'ом, можно ли ещё POST туда же?
Отправлено: ESE от 22 Апреля 2002, 15:12:57
Нет, ну так-конечно 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:
Название: Передаю GET\'ом, можно ли ещё POST туда же?
Отправлено: Chs от 22 Апреля 2002, 15:44:11
Цитировать
для передачи простых данных типа action=20 user_id=крутой_юзер анекдот=номер23178 вполне достаточно

А когда данные усложняться? Скрипт будешь переписывать типа?
Изобретение велосипеда не преследуется по закону.:))
Название: Передаю GET\'ом, можно ли ещё POST туда же?
Отправлено: от 23 Апреля 2002, 00:37:26
Цитировать
Т.е. есть форма с примерно таким описанием

....
....

Если да, то как обработать?


Как у тебя написано, так и обработать. Сейчас у тебя будет обрабатываться POST часть. Но никто не мешает отдельно обработать $ENV{\'QUERY_STRING\'}, который все равно доступен, даже если данные пережавались постом.
Название: Передаю GET\'ом, можно ли ещё POST туда же?
Отправлено: Yuraz от 23 Апреля 2002, 08:18:25
Если со скрытым полем, то думал уже об этом, так и сделаю. Страницы буду вызывать методом GET, а формы сформировывать с срытыми полями для POST. У меня задача такая, скрипт один, а выдаёт много, на половину разных страниц, плюс разные формы на этих страницах...
Название: Передаю GET\'ом, можно ли ещё POST туда же?
Отправлено: Green Kakadu от 25 Апреля 2002, 01:43:29
Цитировать
Передаю данные GET\'ом
http://127.0.0.1/cgi-bin/test_get2.pl?action=20

;)
нет, конечно может я что-то не понял., но как только человек ткнет по такой ссылке (с передачей GET параметров), то никакой друго формы (POST или другой GET) обрабатываться ИМХО не будет :) просто данные не будут передаваться - передастся только то, что со ссылкой.
И с другой стороны - если ткнуть по кнопке в форме POST, то не будут передаваться данные из других форм.
Название: Передаю GET\'ом, можно ли ещё POST туда же?
Отправлено: AlieN от 25 Апреля 2002, 10:51:55
Цитировать
Уж сколько раз твердили миру - используйте CGI.

Весь в дырах и тормозной ?!?!?!?
Название: Передаю GET\'ом, можно ли ещё POST туда же?
Отправлено: Chs от 25 Апреля 2002, 11:39:10
Цитировать
Весь в дырах и тормозной ?!?!?!?

Это кто тебе сказал?
Название: Передаю GET\'ом, можно ли ещё POST туда же?
Отправлено: от 25 Апреля 2002, 20:39:28
>>как только человек ткнет по такой ссылке (с передачей GET параметров), то никакой друго формы (POST или другой GET) обрабатываться ИМХО не будет

Конечно не будет. Форма должна быть одна, POST. При этом все поля формы уйдут постом, но в action можно написать не просто имя скрипта, а имя скрипта с дополнительными параметрами (аналог GET). Эти параметры не будут доступны для обычной обработки формы, потому что форма POST и обрабатываются только параметры полей формы. Но параметры строки запроса (то что стоит после ? в action) можно выловить из $ENV{\'QUERY_STRING\'} и обработать отдельно. Зачем это нужно непонятно, но если человеку надо, значит надо...

Название: Передаю GET\'ом, можно ли ещё POST туда же?
Отправлено: ESE от 25 Апреля 2002, 21:49:37
тут в конкретном случае вообще ничего работать не будет
цитирую
a надо хотябы вот так
Название: Передаю GET\'ом, можно ли ещё POST туда же?
Отправлено: от 25 Апреля 2002, 22:39:35
У меня работает. Хотя, если честно, я просто скопировал этот код из самого первого сообщения, не проверяя. Сейчас проверил, работает.