[an error occurred while processing this directive]
#!/usr/bin/perl # (c)2002 by dreamway neue medien GmbH # Autor: Matthias Reppisch # # v 2.0 21.01.2002 %FORM = (); @value = (); &parse_form; $book = "gaestebuch"; # bei einem Gästebuch $bgcolor1 = "#aaaaaa"; # Farbe des Top-Balken $bgcolor2 = "#e5e5e5"; # Farbe des Textblockes $headtextcolor = "#000000x"; # Schriftfarbe im Top-Balken $textcolor = "#000000"; # Schriftfarbe im Textblock $remarkcolor = "#990000"; # Schriftfarbe von Anmerkungen $vorschau = 5 ; # Anzahl der Vorschau $seite = "gaestebuch_iframe.shtml"; # Name der Ausgabeseite # Folgende Zeilen werden verwendet, wenn mehrere Gästebücher über dieses Script geregelt werden sollen (dann aber die Variablen-Definitionen von oben löschen): # $book = $FORM{book}; # # if ($book eq "gaestebuch1") { # # jetzt hier alle Variablen von oben setzen # # } elsif ($book eq "gaestebuch2") { # # Variablen hier mit den anderen Werten setzen # # } else ... # ************* Daten einlesen *********** unless (-e "gb/data_$FORM{book}.txt") { open(DBFILE, ">gb/data_$FORM{book}.txt") || die "Content-type: text/html\n\n

Konnte Datenfile gb/data_$FORM{book}.txt nicht anlegen: $!

\n"; &lock_ex; close (DBFILE); } open(DBFILE, "gb/data_${book}.txt") || print "Content-type: text/html\n\n

DB-Error: $!

\n"; &lock_sh; @db = ; close (DBFILE); $anzahl = @db; print "Content-type: text/html\n\n"; if (($FORM{view} ne "alle") && ($anzahl > $vorschau)) { print "Dies sind die $vorschau neuesten von insgesamt $anzahl Einträgen.   [alle zeigen]

\n"; } else { print " 
"; } if ($anzahl == 0) { print <<"EndOfHTML";

Es sind leider noch keine Einträge vorhanden :-(

EndOfHTML } if (($anzahl > $vorschau ) && ($FORM{view} ne "alle")) { $anzahl = $vorschau ; } for ($a = 0; $a < $anzahl; $a++) { $line = $db[$a]; @value = split(/\t/, $line); next if ($value[7] eq "off"); # nur Einträge mit Status OK ausgeben unless ($value[1]) {$value[1] = "kein Angabe"} # Email oder Link vertüdeln ;-) if ($value[2] =~ /http|www/) { if ($value[2] =~ /\Ahttp:\/\//) { $person = "$value[1]"; } else { $person = "$value[1]"; } } elsif ($value[2] =~ /\@/) { $person = "$value[1]"; } else { $person = $value[1]; } $value[0] = &systime_to_date($value[0]); # ************ Ausgabe der einzelnen Einträge **************** print <<" EndOfHTML";
EndOfHTML if ($value[5] =~ /\S/) { print <<" EndOfHTML"; EndOfHTML } print <<" EndOfHTML";
$value[3]   ($value[0])
$value[4]

Eingetragen von:  $person


$value[5]

EndOfHTML } exit; # ************************ exklusives Flocking ************************** sub lock_ex { my $zaehler = 0; my $warte = 1; my $maximal = 10; until (flock DBFILE, 2 | 4 ) { &fehler('Wartezeit zum Schreiben der Datei abgelaufen. Daten konnten nicht gespeichert werden!') if $zaehler >= $maximal; sleep $warte; $zaehler += $warte; } } # ************************ shared Flocking ************************** sub lock_sh { my $zaehler = 0; my $warte = 1; my $maximal = 10; until (flock DBFILE, 1 | 4 ) { &fehler('Wartezeit zum Schreiben der Datei abgelaufen. Daten konnten nicht gespeichert werden!') if $zaehler >= $maximal; sleep $warte; $zaehler += $warte; } } # Zeitumrechnung sub systime_to_date { ($sek,$min,$std,$mtag,$mon,$jahr,$wtag,$jtag,$isdst) = localtime($_[0]); $mon = $mon + 1; $jahr = $jahr + 1900; $datumout = sprintf ("%02d.%02d.%04d - %02d:%02d",${mtag},${mon},${jahr},${std},${min}); return $datumout; } # ******************************* Zerlegt die Aufrufparameter ****************************** sub parse_form { my $buffer = ""; my @pairs = (); my $name = ""; my $value = ""; my $pair = ""; %FORM = (); if ($ENV{'REQUEST_METHOD'} eq "GET") { $buffer = $ENV{'QUERY_STRING'}; } elsif ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } # Pluszeichen in Leerzeichen verwandeln $buffer =~ s/\+/ /g; @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); # Hexcode umwandeln $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; if ($FORM{$name} eq "") { $FORM{$name} = $value; } else { $FORM{$name} = "$FORM{$name}, $value"; } $FORM{$name} =~ s/\x0d|\x0a/ /g; } }