#!/usr/bin/perl
# Einlesen der Formulardaten
if($ENV{'REQUEST_METHOD'} eq 'GET') {
$Daten = $ENV{'QUERY_STRING'};
@Formularfelder = split(/&/, $Daten);
foreach $Feld (@Formularfelder) {
($name, $value) = split(/=/, $Feld);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s///g;
$form[$i] = $name; $i++;
$form[$i] = $value; $i++;
}
}
print "Content-type: text/html\n\n";
print "
\n",$form[3],"\n";
print "\n\n";
print "";
print "";
# $form: 1-txt-file 3-ip-addr 5-witznummer 7-vergebene Punkte
# $feld: 0-ipaddr 1-(+3) 2-(+2) 3-(+1) 4-(-1)
$textfilename="/srv/www/vhosts/kraehseite.de/cgi-bin/daten/".$form[1].".txt";
$deli1 = "--\n";
$deli2 = "<>";
open(FILE,"<".$textfilename || die print $textfilename," nicht gefunden!\n");
@datei = ;
close(FILE);
$wtext = join('',@datei);
@votes = split(/$deli1/,$wtext);
$i=0;
until (($feld[0] eq $form[3]) || $i>@votes) {
@feld = split(/$deli2/,$votes[$i]);
$i++;
}
if ($feld[0] eq $form[3]) {
if ($form[5]==$feld[1]||$form[5]==$feld[2]||$form[5]==$feld[3]||$form[5]==$feld[4]) {
print "Diesen Witz haben Sie bereits gewählt!\n
";
$voted=1;
}
if ($voted==0) {
if ($form[7]==3 && $feld[1]==0) {$feld[1]=$form[5];}
elsif ($form[7]==2 && $feld[2]==0) {$feld[2]=$form[5];}
elsif ($form[7]==1 && $feld[3]==0) {$feld[3]=$form[5];}
elsif ($form[7]==-1 && $feld[4]==0) {$feld[4]=$form[5];}
else {
print "Diese Punktzahl haben Sie für diese Kategorie ";
print "bereits vergeben.\n";
$voted=1;
}
}
}
else {
@feld=("0","0","0","0","0");
$feld[0]=$form[3];
if ($form[7]==3) {$feld[1]=$form[5];}
elsif ($form[7]==2) {$feld[2]=$form[5];}
elsif ($form[7]==1) {$feld[3]=$form[5];}
else {$feld[4]=$form[5];}
}
$votes[$i-1] = join("<>",@feld);
# Datei schreiben
$textfilename="/srv/www/vhosts/kraehseite.de/cgi-bin/daten/".$form[1].".txt";
open(FILE,">".$textfilename);
flock(FILE,2);
for (@votes) {print FILE $_."--\n";}
flock(FILE,8);
close(FILE);
print "\n";
print "\n";
# Ausgabe
if ($voted==0) {
print "Sie haben dem Witz Nr. ",$form[5]," aus der Sparte ";
print "\"",$form[1],"\" ",$form[7]," Punkte gegeben.";
}
print "
";
print "Zurück  ";
print "\n\n\n";