Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Perl (http://www.flasher.ru/forum/forumdisplay.php?f=21)
-   -   Get&post (http://www.flasher.ru/forum/showthread.php?t=61925)

P@$l-l0l-( 15.08.2004 16:04

Get&post
 
Скажите pls, возможно ли передавать данные из формы в Perl скрипт двумя методами одновременно, я имею в виду вот что:
<form action="script.cgi?m=read&t=y" method="post">
<input type="text" name="txt">
<input type="submit" name="xxx">
</form>
:)

Fyn 17.08.2004 19:23

Естественно можно.
А в чём собственно проблема то?

P@$l-l0l-( 18.08.2004 01:22

У меня почему-то глючит. Те каторые GET принимаются param('...'), а POST таким же образом нет.

Fyn 18.08.2004 11:32

Вопрос по передаче данных здесь уже много раз обсуждался.
Я обычно, в таких случаях как у тебя, пользуюсь следующим кодом:
Код:

%param = &comming();

sub comming {
        my $dl = $ENV{CONTENT_LENGTH};
        my $query = $ENV{QUERY_STRING};
        if ($dl >0) {
          sysread(STDIN, $que, $dl);
          if ($query) {
            $query = $query.'&'.$que;
          }
          else {
            $query = $que;
          }
        }
        my @comm = split('&', $query);
        my %query = ();
        foreach (@comm) {
          /([^=]+)=(.*)/ && do {
            local ($field, $value) = ($1, $2);
            $query{$field} = &decode($value);
          }
        }
        return %query;
}

sub decode {
        my($val)=@_;
        $val=~s/\+/ /g;
        $val=~s/%([0-9A-H]{2})/pack('C',hex($1))/ge;
        return $val;
}

После чего получаем хэш %param ...

А дальше совсем просто:
Код:

foreach $key (keys %param) {
        $value = $param{$key};
        print "$key => $value";
}

Работает как через GET так и через Post или при одновременной передаче данных через GET и POST.
Ещё ни разу не подводил...
:cool:


Часовой пояс GMT +4, время: 22:39.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.