Nej funkar inte ändå,
här kommer hela koden:
#!/usr/bin/perl
use CGI ":standard";
$in = $ENV{'QUERY_STRING'};@in = split(/[&;]/,$in);
foreach $i (0 .. $#in) {
$in[$i] =~ s/\+/ /g;
($key, $val) = split(/=/,$in[$i],2);
$key =~ s/%([A-Fa-f0-9]{2})/pack("c",hex($1))/ge;
$val =~ s/%([A-Fa-f0-9]{2})/pack("c",hex($1))/ge;
$in{$key} .= "\0" if (defined($in{$key}));
$in{$key} .= $val; }$id = "";if ($in{'id'}) {
$id_number = ($in{'id'});
$id_number =~ s/[^0-9]//g;
}
open (GUESTBOOK, "<$id_number\.txt") or die "Kan inte öppna filen: $!\n";@lines = (<GUESTBOOK> );
close (GUESTBOOK);
print "Content-type:text/html\n\n";
print "@lines";
exit;
print header, start_html("Gästbok!"), h1("Gästbok!");
if (param) { &skriv_inlagg; }
&rita_formular;
&visa_inlagg;
sub rita_formular {
print hr, start_form;
print p, "Namn: ", textfield("namn","", 40), br;
print " E-post: ", textfield("epost", "", 40), br;
print "Meddelande: ", textarea("meddelande", "", 4, 40, 1);
print br, p, submit("", "Skicka!"), " ", reset("Rensa!");
print end_form, hr;
}
sub skriv_inlagg {
$rad{namn} = param('namn');
$rad{epost} = param('epost');
$rad{meddelande} = param('meddelande');
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
$rad{datum} = $date_time_now=sprintf("%04d-%02d-%02d %02d:%02d:%02d", 1900 + $year, ++$mon, $mday, $hour,$min, $sec);
$helaraden = $rad{datum};
foreach $faltnamn (qw(epost namn meddelande)) {
$rad{$faltnamn} =~ s/\r\n|\n/\\n/g;
$rad{$faltnamn} =~ s/\t/ /g;
$helaraden .= "\t" . $rad{$faltnamn}
}
return if $rad{meddelande} !~ /\w/;
open (DATAUT, ">> $id_number.txt") || die("Kan inte skriva till datafilen $datafil: $!\n");
print DATAUT "$helaraden\n";
close(DATAUT);
}
sub visa_inlagg{
open(DATAIN, "< $id_number.txt") || die("Kan inte öppna datafilen $datafil: $!\n");
while(<DATAIN> ) { @inlagg=<DATAIN>; }
close(DATAIN);
foreach $rad (reverse @inlagg) {
$rad =~ s/</</g;
$rad =~ s/\\n/<BR>/g;
($datum, $epost, $namn, $meddelande) = split(/\t|\n/, $rad);
print qq#$datum, <A HREF="mailto:$epost">$namn</A><BR>$meddelande<HR>#;
print br;
}
}