Hejsan...
Jag har ett litet problem...
Jag vill att en inmatning som görs på en sida
skall skrivas till en html sida så att det ser ut ungefär som en gästbok.
Jag har tittat i en gästbok hur det ser ut men har inte fått det att funka.
Det är bara två variabler som skall skrivas dit och dom heter $FORM{'betyg'} och $FORM{'namn'}.
Finns det hjälp att få kanske :o)
Perl typ gästbok
4 svar · 494 visningar · startad av Rödalacket
Kan du dela med dig av inläsningdelen av koden för gästboken som du tittat på (eller länk till skriptet) så blir det enklare att se var felet ligger.
Japp det kan jag.#!/usr/bin/perl
print "Content-type:text/html\n\n";
$gb_file = "../guestbook.htm";
$gb_url = "../guestbook.htm";
&read_form;
&add_entry;
print "Location: $gb_url\n\n";
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@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;
$FORM{$name} = $value;
}
%namn = ( 0 => "",
1 => "Peter",
2 => "Petter",
3 => "Agda",
4 => "Kalle",
5 => "Kålle",
6 => "Åsa" );
print <<EndHTML;
<html><head><title>Resultat</title></head>
<body>
Lagkamrat $namn{$FORM{'namn'}} kommer $FORM{'status'} på Söndag<p>
sub add_entry {
open(MAIN,"$gb_file") | | &fatal("Kan inte öppna filen $gb_file för läsning.<br>Se readme.txt.");
@main = <MAIN>;
close(MAIN);
open(MAIN,">$gb_file") | | &fatal("Kan inte skriva till filen $gb_file.<br>Se readme.txt.");
foreach $main_line (@main) {
if ($main_line =~ /<!--begin-->/) {
print MAIN "<!--begin-->\n";
print MAIN "<table border=0 width='400'>\n";
print MAIN "<tr><td width='20%'><b>Namn:</b></td><td><i><a href=\"mailto:$FORM{'namn'}\">$FORM{'status'}</a></i></td></tr>\n";
print MAIN "</table>\n";
print MAIN "<hr width='400'><br>\n";
} else {
print MAIN "$main_line";
}
}
close(MAIN);
}
EndHTML
Här vill jag alltså att det som skrivs skall fyllas på efter <--begin--> i guestbook.htm
------------------
Är lite osäker på hur du menar men skulle det här fungera?
I så fall kan du använda koden:
#!/usr/bin/perl
$ResultURL = "http://din_doman.se/resultat.html";
$ResultHomeDir = "/home/din_katalog/public_html/resultat.html";
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@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;
$value =~ s/<!--(.|\n)*-->//g;
$value =~ s/</\<\;/g;
$value =~ s/>/\<\;/g;
$FORM{$name} = $value;
}
open (FILE,"$ResultHomeDir") | | die "Kan inte öppna $ResultHomeDir: $!\n";
@LINES=<FILE>;
close(FILE);
$SIZE=@LINES;
open (RESULT,">$ResultHomeDir") | | die "Kan inte öppna $ResultHomeDir: $!\n";
for ($i=0;$i<=$SIZE;$i++) {
$_=$LINES[$i];
if (/<!--begin-->/) {
print RESULT "<!--begin-->\n";
print RESULT "<table border=\"0\" cellspacing=\"0\" cellpadding=\"4\" align=\"center\" width=\"400\"><tr><td align=\"right\" width=\"200\">$FORM{'namn'}</td>\n";
print RESULT "<td width=\"200\">$FORM{'betyg'}</td></tr></table>\n";
}
else {
print RESULT $_;
}
}
close (RESULT);
print "Location: $ResultURL\n\n";
exit;
och koden till formuläret ser du ju på sidan.
Tabellen som skrivs ut av skriptet klarar du säkert att modifiera själv.
Observera att | | i skriptet får ett mellanslag när det publiceras på forumet, så glöm inte att ta bort det.
Ja det där funkar med lite modifieringar :)
Jag fick mitt script att funka men jag fick inte med rullnings listen....varför vet jag inte...
Tack