Hej,
Jeg har lavet en hjemmeside -
www.m-schwartz.dk - men kan ikke få min gæstebog til at virke. Jeg har "hugget" et gratis applikation i perl fra siden
www.webcafe.dk/artikler/perl/gaestebog/g_bog_pl.txt, hvor man "bare" lige selv skal indsætte nogle ting. Men jeg kan ikke få det til at virke. Så mit spørgsmål er: Er der nogle der kan se hvad jeg har gjort forkert i nedenstående kode:
#!/usr/bin/perl
### Simpel gæstebog fra
http://webcafe.dk
# Du skal indstille et par variabler. For at give en idé om,
# hvordan det skal se ud, har jeg lade mine indstillinger stå:
# Denne variabel angiver stien fra dette script til selve gæstebogen
$g_bog = "../../g_bog.htm";
# Den her sætter du til 0, hvis du ikke vil have besked, når nogen
# skriver i gæstebogen
$giv_mig_besked = 1;
# Her skriver du din epost. Det er vigtigt at der er en "\" foran @.
$epost = "m_schwartz2000\@yahoo.dk";
# Stien til Sendmail
$mailprogram = '/usr/lib/sendmail';
# URLen til din gæstebog
$hjem = "
http://www.m-schwartz.dk/g_bog.htm";
# Baggrundsfarven på fejlmeddelelser - hvis folk ikke har udfyldt
# alle felter
$baggrund = "#ffffff";
# Og endelig URLen til dette script
$script_url = "
http://www.m-schwartz.dk/g_bog.pl";
# Slut prut - alt herunder behøver du ikke pille ved.
########## Modtager data fra formen #####################
### Input bliver læst og delt
read(STDIN, $bufferdrengen, $ENV{'CONTENT_LENGTH'});
@data_par = split(/&/, $bufferdrengen);
### De enkelte dele deles op i navn/indhold
foreach $enkelt_par (@data_par) {
($navn, $indhold) = split(/=/, $enkelt_par);
### Indholdet bliver gjort fordøjeligt
$indhold =~ tr/+/ /;
$indhold =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$indhold =~ s/\cM\n/\n/g;
$indhold =~ s/<([^>]|\n)*>//g;
if ($navn eq 'kommentar'){
$indhold =~ s/\n/<br>/g;
}
### og sorteret
$INFORMATION{$navn} = $indhold;
}
if (!$INFORMATION{'navn'} || !$INFORMATION{'overskrift'} || !$INFORMATION{'kommentar'}) {
&mangler;
} else {
&skriv;
}
########## Skriver i gæstebogen ##################
sub skriv {
open (GAMMEL_BOG, "$g_bog") || die &fejl;
@html = <GAMMEL_BOG>;
close(GAMMEL_BOG);
open (NY_BOG, ">$g_bog") || die &fejl;
foreach (@html) {
if ($_ =~ /<!-- ny -->/){
print NY_BOG "<!-- ny -->\n";
print NY_BOG "<h2>$INFORMATION{'overskrift'}<br><br></h2>\n";
if ($INFORMATION{'epost'}){
print NY_BOG "<a href=\"mailto:$INFORMATION{'epost'}\">$INFORMATION{'navn'}</a> skriver: <br><br>\n";
} else {
print NY_BOG "$INFORMATION{'navn'} skriver: <br><br>\n";
}
print NY_BOG "$INFORMATION{'kommentar'}<br><hr noshade>\n";
} else {
print NY_BOG "$_";
} # slut if-else
} # slut foreach
close(NY_BOG);
unless($giv_mig_besked == 0) {
### Sender dig en post
open(MAIL, "|$mailprogram -t") || die &fejl;
print MAIL "From: $INFORMATION{'epost'}\n";
print MAIL "To: $epost\n";
print MAIL "Subject: Der er skrevet i din gæstebog\n\n";
print MAIL "$INFORMATION{'navn'} skriver:\n\n$INFORMATION{'kommentar'}\n";
close(MAIL);
} # slut unless
print "Location: $hjem\n\n";
exit;
} # slut skriv
############ Giver folk en ny form, hvis de ikke har udfyldt de krævede felter #################
sub mangler {
print "content-type:text/html\n\n";
<!-- Minus AutoDato -->
print "<html><head><title>Tsk, tsk - udfyld dog alle felter</title>\n";
<META NAME="Generator" CONTENT="Stone's WebWriter 3.5">
print "</head>\n<body bgcolor=$baggrund>\n";
print "<h2>Udfyld venlist disse felter</h2><br><br>\n";
print "<form action=\"$script_url\" method=\"POST\">\n";
print "<input type=hidden name=\"epost\" value=\"$INFORMATION{'epost'}\">\n";
print "Overskrift: <input type=text name=\"overskrift\" value=\"$INFORMATION{'overskrift'}\"><br>\n";
print "Navn: <input type=text name=\"navn\" value=\"$INFORMATION{'navn'}\"><br>\n";
print "Kommentar:<br><textarea name=\"brok\" vrap=virtual cols=\"35\" rows=\"10\">\n";
print "$INFORMATION{'brok'}";
print "</textarea><br><input type=submit value=\"Undskyld, script\"></form>\n";
exit;
}
########### Bare lige en pænere fejl-side ###################
sub fejl {
print "content-type:text/html\n\n";
print "<html>\n";
print "<h2>$!</h2>\n";
print "</html>\n";
exit;
}
exit;
På forhånd mange tak.
Venlig hilsen Maria.