#!/usr/bin/perl
# Perl-Programm, dass Kommentare von Besuchern Ihrer WWW-Seiten in einer 
# Datei auf Ihrem Server speichert. Die Kommentare der
# Besucher werden an das Ende der Kommentar-Datei angehaengt.
$| = 1;

use strict;

# Diese Variablen muessen Sie anpassen 
my $file = "/home/admin/briefe.txt";  # Name und Pfad der Briefe-Datei
                                      # Muss fuer den HTTP-Daemon schreibbar sein
my $url  = "/comment.html";           # Server-Root-relative URL fuer "Zurueck"
#################################################################################
# Ab hier muessen Sie nichts mehr aendern.
my $datum = localtime(time);
my $exlock=2;
my $unlock=8;
my %FORM = ();

# Parsing the FORM-Input
&parse_form;

# Print Results of the form
&return_html;

sub return_html 
   {
   print "Content-type: text/html\n\n";
   print "<HTML>\n";
   print "<TITLE>Ihr Kommentar: $datum</TITLE>\n";
   print "<BODY>\n";
   print "<H2>Vielen Dank!</H2>\n";
   if ($FORM{'brief'} ne '')
     {
     print "Ihr Kommentar am $datum wurde gespeichert.\n";
     }
   else
     {
     print "Sie haben nichts eingegeben - keine Speicherung.\n";
     }
   print "<center><a href=\"$url\">Zur&uuml;ck</a></center><p>\n";
   # Alternativ geht folgendes
   # print "<center><a href="javascript:history.back()">Zur&uuml;ck</a></center><p>\n";
   print "</BODY></HTML>\n";

   if ($FORM{'brief'} ne '')
     {
     open(FILE, ">> $file");
     flock (FILE, $exlock);
     print FILE "<hr><b>Datum:</b> $datum<br>" ;
     print FILE $FORM{'brief'} ;
     flock (FILE, $unlock);
     close (FILE);
     }
  }

sub parse_form 
    {
    my ($buffer, @pairs, $pair, $name, $value);
    # Read in text
    if ($ENV{'REQUEST_METHOD'} eq "POST")
      {
      read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
      }
    else
      {
      $buffer = $ENV{'QUERY_STRING'};
      }
    @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;
      $FORM{$name} = $value;
      }
    }

