#!/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\nDB-Error: $!\n"; &lock_sh; @db =\n";
} else {
print "
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; } } |