Thanks for the reply. I removed the headers from poll.cgi. Now I get a 'Page cannot be displayed error'. The problem is, poll.cgi takes the vote and writes it to a file. results.cgi reads the file after each vote and populates a table.
poll.cgi
#!C:/Perl/bin/perl -wT
use CGI qw(:standard);
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
use strict;
use Fcntl qw(:flock :seek);
my $outfile="poll.txt";
if(param('club')){
open(POLL,">>$outfile") or dienice ("Can't open poll.txt: $!");
flock(POLL, LOCK_EX);
seek(POLL,0,SEEK_END);
print POLL param('club')."\n";
close(POLL);
}
#redirect to result.cgi
print redirect ("http://10.20.91.122/cgi-bin/results.cgi");
sub dienice {
my($msg) = @_;
print header;
print start_html("Error");
print h2("Error");
print $msg;
print end_html;
exit;
}
results.cgi
#!C:/Perl/bin/perl -wT
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
use strict;
use Fcntl qw(:flock :seek);
print header;
print start_html;
my $outfile="poll.txt";
open(POLL,"$outfile") or dienice("Can't open $outfile:$!");
#set a shared lock on the file
flock(POLL,LOCK_SH);
#seek the beginning of the file
seek(POLL,0,SEEK_SET);
my(%count,$total_count);
$total_count=0;
foreach my $i ("mutd","che","ars","liv","none"){
$count{$i}=0;
}
while(my $rec=<POLL>){
chomp($rec);
$total_count = $total_count+1;
$count{$rec} = $count{$rec}+1;
}
print <<END;
<b>Which is your favorite club?</b><br>
<table border=0 width=50%>
<tr>
<td>Manchester United<td>
<td>$count{mutd} votes<td>
<tr>
<td>Arsenal<td>
<td>$count{ars} votes<td>
<tr>
<td>Chelsea<td>
<td>$count{che} votes<td>
<tr>
<td>Liverpool<td>
<td>$count{liv} votes<td>
<tr>
<td>Others<td>
<td>$count{none} votes<td>
</table>
END
print end_html;
sub dienice {
my($msg) = @_;
print h2("Error");
print $msg;
print end_html;
exit;
}
|