#!/usr/bin/perl #### Eingabe: #Aktion= # Liste: Liste aller Eintraege ohne "Rahmung" # Eintragen: In Name, Email, Homepage, Nachricht stehen die Details. #Von= # Nummer, ab der angezeigt werden soll. Default:1; #Anz= # Wieviele Eintraege sollen angezeigt werden? Default:10; #@GeleseneZeilen; Liste aller gelesenen Zeilen im Diskussionsdatei $Aktion="";$Von="1";$Anz="10";$Name="";$Email="";$HomePage="";$Nachricht=""; $WurdeEingetragen=0; print "Content-type: text/html\n\n"; &Eingabe; &DateiEinlesen; &DateiSchreiben; &Ausgabe; sub Eingabe { if($ENV{'REQUEST_METHOD'} eq 'GET') { $Daten = $ENV{'QUERY_STRING'} } else { read(STDIN, $Daten, $ENV{'CONTENT_LENGTH'}); } @Formularfelder = split(/&/, $Daten); $i = 0; foreach $Feld (@Formularfelder) { ($name, $value) = split(/=/, $Feld); $value =~ s/\+/ /g; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s///g; if ($name eq "Aktion"){$Aktion=$value;} elsif ($name eq "Name"){$Name=$value;} elsif ($name eq "Email"){$Email=$value;} elsif ($name eq "Homepage"){$Homepage=$value;} elsif ($name eq "Von"){$Von=$value;} elsif ($name eq "Anz"){$Anz=$value;} elsif ($name eq "Nachricht"){$Nachricht=$value;} } $Nachricht =~ s/\n|\n\r|\r\n/ /g; } sub DateiEinlesen { $AnzMsg=0; %CurHash;my @EingelListe; if (open(GAST,") { $AnzMsg++; push(@GeleseneZeilen,$_); } close(GAST); } } sub Ausgabe { my @RefersTo;my %CurHash;my @EingelListe;my @AnzRefers=0;my $Idx=1;my $iAusg; if ($Aktion eq "Liste") { $ID="Gästebuch|Ansehen";$Rev = "";$Datum="";$ComeFromElsewhere=1;$Titel="Das Gästebuch von mtb-suedbaden.de"; do "Nav.pl"; print '

Das Gästebuch

Neuer Eintrag
'; if ($AnzMsg==0) { print 'Es hat noch niemand etwas ins Gästebuch geschrieben. Schnell nachholen'."\n"; } else { if ($WurdeEingetragen == 1) { print "Vielen Dank für deinen Eintrag ins Gästebuch.
\n"; } &NavBarAusgabe; print "\n"; for (@GeleseneZeilen) { if ($Idx >= $Von) { if ($Idx < $Von + $Anz) { @EingelListe = split(/\|\|\|/,$_); %CurHash = &GetEntry($_); # print '\n"; $PersDet=''; if ($CurHash{"Homepage"} ne "") {$PersDet = $PersDet.'';} $PersDet = $PersDet.''; print '\n"; } else {last;} } $Idx++; } print "
'.eval($AnzMsg-$Idx+1).'.Name: '.$CurHash{"Name"}.'
Email: '.$CurHash{"Email"}.'
Homepage: '.$CurHash{"Homepage"}.'
Datum: '.$CurHash{"Datum"}.'
'.$CurHash{"Nachricht"}."
Name:'.$CurHash{"Name"}.'
Homepage:'.$CurHash{"Homepage"}.'
Datum:'.$CurHash{"Datum"}.'
'.eval($AnzMsg-$Idx+1).''."$PersDet
".$CurHash{"Nachricht"}."
"; &NavBarAusgabe; } #&DateiAusgabe("Gaestebuch/HTML/GaestebuchTail.html"); $ID="Gästebuch|Ansehen";$Rev = 1;$Datum="13.10.2000";$ComeFromElsewhere=1; do "Nav.pl"; #print ""; } } sub NavBarAusgabe { my $iAusg; print "Eintrag: "; for ($iAusg = 0; $iAusg < $AnzMsg/$Anz;$iAusg ++) { if ($Von == $iAusg*$Anz+1) { print eval($AnzMsg-$iAusg*$Anz)." "; } else { print ''.eval($AnzMsg-$iAusg*$Anz)." "; } } if ($AnzMsg > $iAusg*$Anz) { if ($Von == $iAusg*$Anz+1) { print eval($AnzMsg-$iAusg*$Anz)." "; } else { print ''.eval($AnzMsg-$iAusg*$Anz)." "; } } } sub GetEntry { my @EingelListe = split(/\|\|\|/,$_[0]); return ("Name",$EingelListe[0],"Email",$EingelListe[1],"Homepage",$EingelListe[2], "Datum",$EingelListe[3], "Nachricht",$EingelListe[4]); } sub DateiSchreiben { if ($Aktion eq "Eintragen") { $Homepage =~ s/http:\/\///i; open(GAST,">Gaestebuch/Gaestebuch.db"); print GAST $Name."|||".$Email."|||".$Homepage."|||".localtime(time())."|||".$Nachricht."\n"; for (@GeleseneZeilen) { print GAST $_; } close(GAST); $Aktion="Liste"; $WurdeEingetragen=1; @GeleseneZeilen=@NeuGeleseneZeilen;# GeleseneZeilen leeren. &DateiEinlesen; } } sub DateiAusgabe { if (open(AUSG,"<".$_[0])) { while () { print $_; } } }