unendliches Laden
Christian
- perl
0 Jan
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>";
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