Philipp Hasenfratz: Gästebuch

Beitrag lesen

Halihallo Arthur

<form action="cgi-bin\guestbook.pl" name="questbook" target="_top" method="post" enctype="multipart/form-data">

Du sagst, dass guestbook.pl angezeigt wird und dir ist das nicht klar? - Hier steht's ja. Du übermittelst die Formulareingaben _an_ guestbook.pl, was dieses damit macht, ist seine Sache, aber das guestbook.pl bleibt in jedem Fall in der Adresszeile.

my $cgi = new CGI;
my  @name = $cgi->param('name');

my $name = $cgi->param('name');

oder hat eine Person mehrere Namen? - Du hast nur Eingabefeld namens 'name' im Formular, ein Array ist hier unlogisch.

my @kommentar = $cgi->param('kommentar');

s. oben

open(DATEI, "<neu.html");

du hast oben so schön mit einfachen Quotes gearbeitet, warum hier ein double quote? - Das ist aperformant.

push(@alt,"<!-- NEU -->\n");};

hier macht der double quote frühestens Sinn!

open(DATEI, "<neu.html");
$, = "<br>";
print "@neu";

das funktioniert zwar, print join('<br>', @neu) ohne das $,='<br>' wäre jedoch wesentlich schöner.

close(DATEI);

Hier gibst du die neue neu.html aus. Warum meinst du, dass dies in der Adresszeile angezeigt werden soll? - Der Browser sieht nur eines, nämlich eine HTML Datei, die von _guestbook.pl_ kommt.
Zudem hast du den HTTP-Header vergessen => das führt immer zu einem Fehler. Du musst mindestens den Content-Type ausgeben, sonst weiss der Browser gar nicht, wie er deine Seite ausgeben soll.

also: print 'Content-Type: text/html'."\015\012" x 2;

am Anfang.

Viele Grüsse

Philipp

PS: Wenn du dich wunderst, warum keine neuen Postings gespeichert werden: Du musst @neu auch in der Datei speichern!