- рамер метода пост, azalio, 12:35 , 03-Окт-05 (1)
>как увелиить размер post? потому что не всё через пост доходит а >одинаковое количество символов, где это поменять на большее? Чем постишь, куда постишь.
- рамер метода пост, pheonix, 12:51 , 03-Окт-05 (2)
>>как увелиить размер post? потому что не всё через пост доходит а >>одинаковое количество символов, где это поменять на большее? > >Чем постишь, куда постишь. через форму написанную на языке html указан метод пост в форме, постю в скрипт на писанный на перле и всё это на апаче
- рамер метода пост, rWizard, 23:55 , 03-Окт-05 (3)
- рамер метода пост, pheonix, 10:59 , 05-Окт-05 (4)
- рамер метода пост, rWizard, 14:28 , 05-Окт-05 (5)
- рамер метода пост, pheonix, 07:39 , 07-Окт-05 (6)
#!/usr/bin/perl package in; BEGIN { $VERSION = '1.1'; use Exporter(); @ISA=qw(Exporter); @EXPORT=qw(%GET %POST %COOKIE %IN); use Storable qw(dclone nstore retrieve); if ($ENV{REQUEST_METHOD} eq "GET") {&ParseGet($ENV{QUERY_STRING});%GET=%{dclone(\%G)};undef %G;} if ($ENV{REQUEST_METHOD} eq "POST") { if ($ENV{CONTENT_TYPE}=~/^application\/x\-www\-form\-urlencoded/i) {&ParsePost;} if ($ENV{CONTENT_TYPE}=~/^multipart\/form\-data/i) {&ParsePostF;} } &ParseCookie; %IN=(%POST,%GET,%COOKIE); # переменные окружения # ParseGet sub ParseGet(?) { ($data)=@_; undef %G; foreach (split(/&/,$data)) { ($a,$b)=split(/=/,$_); $a=URLDecode($a); $b=URLDecode($b); if (exists($G{$a})) { if (!ref $G{$a}) #esli net esho massiva { $_=$G{$a}; delete $G{$a}; push @{$G{$a}},$_; } push (@{$G{$a}},$b); } else {$G{$a}=$b;} } return 0; } # ParsePost sub ParsePost { sysread(STDIN,$post,$ENV{CONTENT_LENGTH}); &ParseGet($post); %POST=%{dclone(\%G)}; undef %G; return 0; } # ParsePostF sub ParsePostF { sysread(STDIN,$post,$ENV{CONTENT_LENGTH}); my $boundary_=$ENV{CONTENT_TYPE}; $boundary_=~m/boundary=\-*([\w\/\+\\]+)/; $boundary_=$1; @boundary_=split(/-+$boundary_/,$post); pop @boundary_; shift @boundary_; foreach $param_ (@boundary_) { $param_=~s/^[\n\r]+//; ($head_,$data_)=split (/[\r\n]{4}/,$param_); $data_=~s/\r\n$//; #key $head_=~m/name="?(\w+)["; \r\n]/m; $key_=$1; #data if ($head_=~m/filename="?([^";\r\n]+)"?/m) { # filer to filename ${$POST{$key_}}[0]=$1; ${$POST{$key_}}[1]=$data_; } elsif (exists($POST{$key_})) { if (!ref $POST{$key_}) #esli net esho massiva { $_=$POST{$key_}; delete $POST{$key_}; push @{$POST{$key_}},$_; } push (@{$POST{$key_}},$data_); } else {$POST{$key_}=$data_;} } return 0; } # ParseCookie sub ParseCookie { foreach (split(/; /,$ENV{HTTP_COOKIE})) { ($key_,$value_)=split(/=/,$_); URLDecode($key_); URLDecode($value_); #filters on cookie $COOKIE{$key_}=$value_; } return 0; } # unescape URL-encoded data sub URLDecode($) { my $todecode = shift; $todecode =~ tr/+/ /; $todecode =~ s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge; return $todecode; } } 1;
вот, но тут нет никаких ограничений вызываеться в программе так $IN{key} и всё работает тока вот что-то он не до конца принимает всё что нужно:(
- рамер метода пост, pheonix, 08:57 , 07-Окт-05 (7)
а всё не нужно ничего я всё понял, спасибо кто хотел помочь:)
|