Christian: unendliches Laden

Hallo Leuts,

könnt ihr mir helfen? Ich hab folgendes Problem:
Ich möchte ein Gästebuch erstellen und habe dafür folgende Dateien
erstellt:
neu.html       hier werden neue einträge geschrieben
gaeste.html    hier werden alle Einträge aufgelistet
gaeste.pl      die scriptdatei zur verarbeitung

Den Inhalt der Dateien ist unten aufgelistet. Ich habe mich bei der Erstellung an die Perl/cgi erklärung von selfhtml gehalten.

Jetzt wird aber das script unendlich lange geladen - es kommt keine fehlermeldung o.ä.!?

Kann jemand der mehr Ahnung hat als ich die Quellcodes durchsehen und mir verraten was falsch geschrieben ist?

Datei "neu.html"
__________________________________

<html>
<head>
<title>Gaestebuch - Eintrag hinzufügen</title>
</head>
<body bgcolor="#004080" text="#80FFFF" link="#80FFFF" vlink="#80FFFF" alink="#80FFFF">

<table border="0" width="100%" high="100%" cellspacing="0" cellpadding="0">
   <tr>
      <td align="center">
 <form action="http://127.0.0.1/cgi-bin/GAESTE/gaeste.pl" method="post">
 <table>
    <tr>
       <td>
  Name:
       </td>
    </tr>
    <tr>
       <td>
  <input type="text" name="Username" size="30">
       </td>
    </tr>
    <tr>
       <td>
  Beitrag:
       </td>
    </tr>
    <tr>
       <td>
  <textarea name="Usertext" cols="50" rows="10">
  </textarea>
       </td>
    </tr>
    <tr>
       <td align="center">
  <input type="submit" value="Eintragen">
       </td>
    </tr>
 </table>
 </form>
      </td>
   </tr>
</table>

</body>
</html>

Datei "gaeste.html"
__________________________________

<html>
<head>
<title>Gaestebuch</title>
</head>
<body>

<table>
   <tr>
      <td>
 <!-- NEU -->
      </td>
   </tr>
</table>
</body>
</html>

Datei "gaeste.pl"
__________________________________

#!C:/Perl/bin/perl -w

use strict;
use CGI;
my $cgi = new CGI;
use CGI::Carp qw(fatalsToBrowser);

open(DATEI, "<Z:/cgi-bin/GAESTE/gaeste.html") || die "Datei nicht gefunden";
my @Zeilen = <DATEI>;
close (DATEI);

my @Feldnamen=$cgi->param();

my @NeuerEintrag;
push (@NeuerEintrag, "<table border=1 width=50% height=50% cellpadding=5><tr height=10%><td valign=middle>");
push (@NeuerEintrag, $cgi->param(@Feldnamen[0]));
push (@NeuerEintrag, "</td></tr><tr><td align=center valign=middle>");
push (@NeuerEintrag, $cgi->param(@Feldnamen[1]));
push (@NeuerEintrag, "</td></tr></table>");
push (@NeuerEintrag, "</body></html>");

my @NeueZeilen;
my $Zeile;
foreach $Zeile (@Zeilen)
{
if(/^<!--NEU-->/)
{
foreach(@NeuerEintrag)
{
push(@NeueZeilen,$_);
}
push(@NeueZeilen,"<!-- NEU -->\n");
}
else
{
push(@NeueZeilen,$Zeile);
}
}

open(DATEI, ">Z:/cgi-bin/GAESTE/gaeste.html") || die "Datei nicht gefunden";
print DATEI @NeuerEintrag;
close (DATEI);

print  $cgi->header();
print "<html><head><title>Testausgabe</title></head><body bgcolor=#004080 text=#80FFFF>";
print "</body></html>";

  1. Hallo Leuts,

    Hallo

    Datei "gaeste.pl"
    __________________________________

    #!C:/Perl/bin/perl -w

    use strict;
    use CGI;
    my $cgi = new CGI;
    use CGI::Carp qw(fatalsToBrowser);

    open(DATEI, "<Z:/cgi-bin/GAESTE/gaeste.html") || die "Datei nicht gefunden";
    my @Zeilen = <DATEI>;
    close (DATEI);

    my @Feldnamen=$cgi->param();

    my @NeuerEintrag;
    push (@NeuerEintrag, "<table border=1 width=50% height=50% cellpadding=5><tr height=10%><td valign=middle>");

    ändere @Feldnamen[0]in $Feldnamen[0] um.

    push (@NeuerEintrag, $cgi->param(@Feldnamen[0]));
    push (@NeuerEintrag, "</td></tr><tr><td align=center valign=middle>");

    ändere @Feldnamen[1]in $Feldnamen[1] um.

    push (@NeuerEintrag, $cgi->param(@Feldnamen[1]));
    push (@NeuerEintrag, "</td></tr></table>");
    push (@NeuerEintrag, "</body></html>");

    my @NeueZeilen;
    my $Zeile;
    foreach $Zeile (@Zeilen)
    {
    if(/^<!--NEU-->/)
    {
    foreach(@NeuerEintrag)
    {
    push(@NeueZeilen,$_);
    }
    push(@NeueZeilen,"<!-- NEU -->\n");
    }
    else
    {
    push(@NeueZeilen,$Zeile);
    }
    }

    Wenn du den Inhalt der Datei nicht jedesmal überschreiben willst, solltest du die Syntax umändern in:   open(DATEI, ">>Z:\cgi-bin...

    open(DATEI, ">Z:/cgi-bin/GAESTE/gaeste.html") || die "Datei nicht gefunden";
    print DATEI @NeuerEintrag;
    close (DATEI);

    print  $cgi->header();
    print "<html><head><title>Testausgabe</title></head><body bgcolor=#004080 text=#80FFFF>";
    print "</body></html>";

    Ansonsten solltest du noch den Pfad für den Bang überprüfen (#!C:/Perl/bin/perl) wenn der nämlich nicht stimmt, ist das auch äusserst schlecht.

    Mfg Jan