package Site::Common; use strict; use DBI; use DBD::mysql; use Exporter; use Template; use Site::Variables; our @ISA = qw(Exporter); our @EXPORT = qw(%data %file $template); my %cookie = ($ENV{'HTTP_COOKIE'}.';') =~ /(\S+)=(\S+);/g; # Some subs removed... our (%data, %file); if ($ENV{'GATEWAY_INTERFACE'}) { my $query_string; $query_string = $ENV{'QUERY_STRING'} if $ENV{'QUERY_STRING'}; if ($ENV{'REQUEST_METHOD'} eq 'POST') { if ($ENV{'CONTENT_TYPE'} =~ /^multipart\/form-data/i) { my ($key, $name); my $boundary = ; chomp $boundary; binmode STDIN; local $/; my @parts = split /$boundary?/, ; foreach my $p(@parts) { if ( $p =~ /^\s*Content-Disposition: +form-data; +name=\"(\w+)?\"(; +filename=\"(.+)?\")?\r\n/i ) { $key = $1; $name = $3; if ( $p =~ /Content-Type: +(\w+\/\w+)?\r\n/i ) { $file{$key, 'type'} = $1; $file{$key, 'name'} = $name; (undef, $file{$key, 'file'}) = split /\r\n\r\n/, $p, 2; $data{$key} = 'FILE'; } else { (undef, $data{$key}) = split /\r\n\r\n/, $p, 2; $data{$key} =~ s/(\r|\n)+$//g; } } } } else { $query_string .= '&' if $query_string; $query_string .= ; } } if ($query_string) { my @pairs = split /&/, $query_string; foreach my $p(@pairs) { $p =~ tr/+/ /; $p =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; my ($key, $val) = split /=/, $p, 2; $data{$key} = $val; } } chomp %data; } 1;