URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 3616
[ Назад ]

Исходное сообщение
"рамер метода пост"

Отправлено pheonix , 03-Окт-05 08:50 
как увелиить размер post? потому что не всё через пост доходит а одинаковое количество символов, где это поменять на большее?

Содержание

Сообщения в этом обсуждении
"рамер метода пост"
Отправлено azalio , 03-Окт-05 12:35 
>как увелиить размер post? потому что не всё через пост доходит а
>одинаковое количество символов, где это поменять на большее?

Чем постишь, куда постишь.


"рамер метода пост"
Отправлено pheonix , 03-Окт-05 12:51 
>>как увелиить размер post? потому что не всё через пост доходит а
>>одинаковое количество символов, где это поменять на большее?
>
>Чем постишь, куда постишь.


через форму написанную на языке html указан метод пост в форме, постю в скрипт на писанный на перле и всё это на апаче


"рамер метода пост"
Отправлено rWizard , 03-Окт-05 23:55 
Скрипт иcпользует CGI.pm ? если да, то $CGI::POST_MAX ( http://search.cpan.org/~lds/CGI.pm-3.11/CGI.pm#Avoiding_Deni... )



"рамер метода пост"
Отправлено pheonix , 05-Окт-05 10:59 
>Скрипт иcпользует CGI.pm ? если да, то $CGI::POST_MAX ( http://search.cpan.org/~lds/CGI.pm-3.11/CGI.pm#Avoiding_Deni... )


нет не используеться он, руками там всё принимаеться но никаких ограничений не стоит сразу говорю


"рамер метода пост"
Отправлено rWizard , 05-Окт-05 14:28 
>>Скрипт иcпользует CGI.pm ? если да, то $CGI::POST_MAX ( http://search.cpan.org/~lds/CGI.pm-3.11/CGI.pm#Avoiding_Deni... )
>
>
>нет не используеться он, руками там всё принимаеться но никаких ограничений не
>стоит сразу говорю
тогда код скрипта в студию


"рамер метода пост"
Отправлено pheonix , 07-Окт-05 07:39 
#!/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 , 07-Окт-05 08:57 
а всё не нужно ничего я всё понял, спасибо кто хотел помочь:)