package cgiLib; use util; use strict; require './lib/cgi-lib.pl'; sub new { shift; my $in=&ReadParse; my $res={}; while (my ($k,$v)=each %{$in}) { if ($k =~ /^_[a-zA-Z0-9]+_/) { if (!$res->{$&}) {$res->{$&}={};} $res->{$&}->{$'}=$v; } $res->{$k}=$v; } bless $res; } <<'EOF'; sub new2 { my $c=shift; my $meth = $ENV{'REQUEST_METHOD'}; my $str; if ($meth eq 'GET') { $str= $ENV{'QUERY_STRING'}; } if ($meth eq 'POST') { while () { $str .= $_; } } my @prm=split(/&/,$str); my $p; my $res={}; foreach $p (@prm) { my ($k,$v)=split(/=/,$p,2); $k=&util::unescapeFromURL($k); $v=&util::unescapeFromURL($v); $v =~ s/\r//g; if ($k =~ /^_[a-zA-Z0-9]+_/) { if (!$res->{$&}) {$res->{$&}={};} $res->{$&}->{$'}=$v; } $res->{$k}=$v; } bless $res,$c; } EOF sub getCookie{ my $t=shift; $t->{name}=shift; my @pairs = split(/;/, $ENV{'HTTP_COOKIE'}); my %coks; foreach (@pairs) { my ($key,$val) = split(/=/); $key =~ s/\s//g; $coks{$key} = $val; } $t->{cookie}=$coks{$t->{name}}; } sub getSetCookie { my $t=shift; my $val=shift; my $expDays=shift; $expDays=60 if (!$expDays); my ($sec,$min,$hour,$mday,$mon,$year,$wday) = gmtime(time+$expDays*24*60*60); my @week = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); my @month=('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'); my $exp = sprintf("%s, %02d-%s-%04d %02d:%02d:%02d GMT", $week[$wday],$mday,$month[$mon],$year+1900,$hour,$min,$sec); "Set-Cookie: $t->{name}=$val; expires=$exp"; } sub header { print <<"EOF"; Content-type: text/html EOF } 1;