X-Git-Url: http://git.shiar.net/perl/plp/.git/blobdiff_plain/b5eadb0c810558015cd4dc943e2c25b4acbfec58..b7a10718f1c1e5d0028cd367c337e9f85dc56618:/plpfields.pm diff --git a/plpfields.pm b/plpfields.pm index 8f566a2..5325d69 100644 --- a/plpfields.pm +++ b/plpfields.pm @@ -3,29 +3,44 @@ use strict; use vars qw(%get %post %fields %cookie %INTERNAL); -if ($ENV{QUERY_STRING} ne ''){ - for (split /&/, $ENV{QUERY_STRING}) { - my @keyval = split /=/; - DecodeURI(@keyval); - $get{$keyval[0]} = $keyval[1]; +$INTERNAL{getsub} = sub { + my %get; + if ($ENV{QUERY_STRING} ne ''){ + for (split /&/, $ENV{QUERY_STRING}) { + my @keyval = split /=/; + DecodeURI(@keyval); + $get{$keyval[0]} = $keyval[1]; + } } -} + return \%get; +}; - -$INTERNAL{post} = ; -if ($INTERNAL{post} ne ''){ - for (split /&/, $INTERNAL{post}) { - my @keyval = split /=/; - DecodeURI(@keyval); - $post{$keyval[0]} = $keyval[1]; +$INTERNAL{postsub} = sub { + my %post; + $INTERNAL{post} = ; + if (defined($INTERNAL{post}) && $INTERNAL{post} ne '' && + ($ENV{CONTENT_TYPE} eq '' || $ENV{CONTENT_TYPE} eq 'application/x-www-form-urlencoded')){ + for (split /&/, $INTERNAL{post}) { + my @keyval = split /=/; + DecodeURI(@keyval); + $post{$keyval[0]} = $keyval[1]; + } } -} + return \%post; +}; + +$INTERNAL{fieldssub} = sub { + $get{PLPdummy}, $post{PLPdummy}; # Trigger creation + return {%get, %post} +}; + +tie %get, 'PLP::Delay', 'main::get', $INTERNAL{getsub}; +tie %post, 'PLP::Delay', 'main::post', $INTERNAL{postsub}; +tie %fields, 'PLP::Delay', 'main::fields', $INTERNAL{fieldssub}; -%fields = %get; -@fields{keys %post} = values %post; #%fields = (%get, %post); -if ($ENV{HTTP_COOKIE} ne ''){ +if (defined($ENV{HTTP_COOKIE}) && $ENV{HTTP_COOKIE} ne ''){ for (split /; ?/, $ENV{HTTP_COOKIE}) { my @keyval = split /=/; $cookie{$keyval[0]} ||= $keyval[1];