#!/usr/bin/perl # use FCGI; srand; REQUEST: while(FCGI::accept() >= 0) { $id = ""; %FORM = (); &getdata; if ($ENV{'QUERY_STRING'} =~ /^(\w+)$/) { $id = lc($1); } elsif ($ENV{'PATH_INFO'} =~ /^\/(\w+)$/) { $id = lc($1); } else { $id = $FORM{'id'} || $ARGV[0]; } unless ($id) { print "Location: http://www.freevote.com/\n\n"; next REQUEST; } print "Location: http://www.freevote.com/booth/$id\n\n"; } sub getdata { my $buffer; if ($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { # $buffer = $ENV{'QUERY_STRING'}; } # Split the name-value pairs my $pair; my @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; if ($FORM{$name}) {$FORM{$name} .= ", $value";} else {$FORM{$name} = $value;} } }