azrael: Gaestebuch

Beitrag lesen

#!/usr/bin/perl -w

use Fcntl qw(:DEFAULT :flock);

$Zeit_Berichtigung  = +3.25;
$date = localtime(time+($Zeit_Berichtigung*3600));
chop($date);
&parse_form;

$in{'Kommentar'} =~ s/<script//img;
$in{'Kommentar'} =~ s/<style//img;
$in{'username'} =~ s/\n//mg;
$in{'username'} =~ s/\r//mg;
$in{'email'} =~ s/</</mg;
$in{'email'} =~ s/\n//mg;
$in{'email'} =~ s/\r//mg;

print "Content-type: text/html\n\n";

if ($in{'email'} !~m/.*@.*..*/i)
{
print "<html>\n<head><title>Fehler</title>\n</head>\n<Body BACKGROUND="http://www.8ung.at/hellofweb/gfx/rk.jpg" text="ff9900" LINK="#f76809" VLINK="#f76809" ALINK="#f76809">\n<p><center><h3>Du musst eine richtige E-Mail Adresse eingeben.</h3></center></p>\n";
exit;
}
elsif ($in{'username'} eq "") {
print "<html>\n<head><title>Fehler</title>\n</head>\n<Body BACKGROUND="http://www.8ung.at/hellofweb/gfx/rk.jpg" text="ff9900" LINK="#f76809" VLINK="#f76809"
ALINK="#f76809">\n<p><center><h3>Bitte einen Namen eingeben</h3></center></p>\n";
}
elsif ($in{'Kommentar'} eq "") {
print "<html>\n<head><title>Fehler</title>\n</head>\n<Body BACKGROUND="http://www.8ung.at/hellofweb/gfx/rk.jpg" text="ff9900" LINK="#f76809" VLINK="#f76809"
ALINK="#f76809">\n<p><center><h3>Na, Text braeuchten wir schon</h3></center></p>\n";
}
else {
&start;
}

Dankesseite ausgeben

sub start {
print "<HTML>\n";
print "<head><title>Neueintrag in das Gästebuch</title></head>\n";
print "<body background="http://www.8ung.at/hellofweb/gfx/rk.jpg" text="ff9900" link="#FF6600" vlink="#FF6600" alink="#FF6600" bgproperties="fixed">\n";
print "<blockquote><center>\n";
print "<H2>Neueintrag in das Gästebuch</H2>\n";
print "am $date<p>\n";
print "<HR size="1">\n";
print "</center><p>\n";
print "Wir haben von Ihnen folgende Angaben erhalten:<p> \n";
print "<ul> \n";
print "<li>Name: <b>$in{'username'}</b></li>\n";
print "<li>E-Mail Adresse: <b>$in{'email'}</b></li>\n";
print "<li>Webseite: <b>$in{'website'}</b></li>\n";
print "<li>Kommentar:<br></li>\n";
print "<b>$in{'Kommentar'}</b>\n";
print "</ul><p>\n";
print "<HR size="1">\n";
print "Vielen Dank für Ihren Eintrag in unserem <a href="http://www.1blubba1.f2s.com/gaestebuch.html">Gaestebuch</a></p></blockquote>\n";
&gaestebuch;
print "</BODY>\n";
print "</HTML>\n";
}

Gaestebuch

sub gaestebuch {
$outfile = "/web/sites/195/12azra21/www.1blubba1.f2s.com/gaestebuch.html";

open(FILE,"$outfile") or die "\Datei $outfile konnte nicht geoeffnet werden\n";
@LINES=<FILE>;
close(FILE);
$SIZE=@LINES;

open(OUTFILE,">$outfile") or die "\Datei $outfile konnte nicht geoeffnet werden\n";
flock(OUTFILE, LOCK_EX) or die "\Cannot lock $outfile\n";

for ($i=0;$i<=$SIZE;$i++) {
   $_=$LINES[$i];
   if (/<!--begin-->/) {

print OUTFILE "

<p>Am $date schrieb <b>$in{'username'}</b> (E-Mail: <a href=mailto:$in{'email'}>$in{'email'}</a>) das folgende in unser Gästebuch.</p>

<p>Kommentar:<br>
     <b>$in{'Kommentar'}</b></p>\n

<p>Homepage: <a href="$in{'website'}">$in{'website'}</a></p>\n
     <p><div align="right"><font size="-2">IP: $ENV{'REMOTE_ADDR'}</font></div></p>
     <hr size="1">\n

";

close(OUTFILE); }
  }
}

sub parse_form {
    local ($buffer, @pairs, $pair, $name, $value);
    # Read in text
    $ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
    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;
        $in{$name} = $value;
    }
}

---------------------------------------------------

also, wieso wird hier die gaestebuch.html mit dem Eintrag ueberschrieben, statt den Gaestebucheintrag hinter das <!--begin-->
zu schreiben ? mit >>$outfile statt >$outfile wuerde ja das abschließende </body></html> am ende der gaestebuch.html an der falschen stelle sein, da die Eintraege einfach an das ende der datei angehaengt werden wuerden, aber wieso wird die gaestebuch.html mit >$outfile gerade ersetzt ?

das ist auch der Teil vom code, den ich von matt's Gaestebuch uebernommen habe und eigentlich sehe ich hier auch keinen Fehler :(

mfg: <a href="http://www.8ung.at/hellofweb">azrael</a>

http://www.1blubba1.f2s.com/gaestebuch.html