Gästebuch - wieso geht der Script hier nich richtig?

N

Narrator

So ich peils nich!
Hab jez bestimmt 3h daran gesessen, und inziwischen funktioniert er sogar. Die File wird richtig geupdated. Jedoch bekomm ich immer nur so eine verdammte Meldung obwohl ich mit print HTML-Code ausgebe. Kann mir das einer erklären und mir ne Lösung geben? Die Meldung is ganz unten.
Kann mir dann vielleicht noch jemand sagen, wie man mit Script ne bestimmte URL öffnet?


Hier der Perlscript

#!c:/perl/bin/perl -w
use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);

my $filename = "/apache/htdocs/pulizien/current.html";

my $cgi = new CGI;


my $Partei = $cgi->param( "Partei" );


#Text dekodieren
$Partei =~ tr/+/ /;
$Partei =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$Partei =~ s/</&lt;/g;
$Partei =~ s/>/&gt;/g;

#muss noch gmacht werden
my $LogoAlt="";
my $LogoSrc="";


my $Text = $cgi->param( "Publication" );

#Text dekodieren
$Text =~ tr/+/ /;
$Text =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$Text =~ s/</&lt;/g;
$Text =~ s/>/&gt;/g;

#Datei öffnen und Zeilen einlesen

open( FILE , "< $filename") or die "Fehler beim Öffnen der Datei: $!\n";
my @Zeilen=<FILE>;
close( FILE );

my $c=1;
my $c2=0;
my @NeueZeilen=();
my $number=0;

#Liest Anzahl an Veröffentlichungen
foreach(@Zeilen){
if (/<!-publication-->/) {
$c++;
}
}

foreach(@Zeilen){
if(/<!-number-->/) {
#Trägt neue Nummern ein
$c2++;
push( @NeueZeilen , $_ );
push( @NeueZeilen , "$c2/$c\n" );
$number=1;
}
elsif(/<!-coming soon-->/) {
#neuer Eintrag
$c2++;
push( @NeueZeilen , "<!-publication-->\n" );
push( @NeueZeilen , "<table border=\"3px\"><tr><td>\n" );
push( @NeueZeilen , "<span style=\"color: RED;\">\n" );
push( @NeueZeilen , "<!-number-->\n" );
push( @NeueZeilen , "$c2/$c\n" );
push( @NeueZeilen , "</span><br>\n" );
push( @NeueZeilen , "<!-logo-->\n" );
push( @NeueZeilen , "<img alt=\"$LogoAlt\" src=\"$LogoSrc\"></img><br>\n" );
push( @NeueZeilen , "<!-text-->\n" );
push( @NeueZeilen , "$Text\n" );
push( @NeueZeilen , "</td></tr></table>\n" );
push( @NeueZeilen , "\n" );
push( @NeueZeilen , "<!-coming soon-->\n");
} elsif( $number==0) {
push( @NeueZeilen , $_ );
} else {
$number=0;
}
}


#print @NeueZeilen;


open( FILE , "> $filename") or die "Fehler beim Öffnen der Datei: $!\n";
foreach (@NeueZeilen){
print FILE $_;
print $_;
}
close( FILE );

Hier die Meldung:

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, admin@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.



--------------------------------------------------------------------------------

Apache/1.3.23 Server at localhost Port 80
 
Hi!

Du gibts keine Content-Type vor dem ersten Print aus. Dadurch weis der Webserver nicht was er mit den zurückgegeben Daten vom PerlScript machen soll und schickt an den Browser einen 500er Error. Im Apache Error-Log wirst du was von wegen "Premature end of ScriptHeaders" finden wenn du nachsiehst.

Füge einfach vor dem ersten print Befehl folgendes ein:
Code:
print "Content-Type: text/html\n\n";

Dann sollte er normal zumindest etwas anzeigen :)

Gruß,
Sven
 
Danke für die Info, aber ich hab gestern selbst noch
n paar kleine Sachen geändert(hab leider keine Ahnung mehr was genau)
und seltsamerweise hat er es aufeinmal angezeigt, auch wenn ich das jez nich mehr benutze da ich einfache mit $cgi->redirect auf die bearbeitete Seite springe.
Aber wenn ich im Script nur das HTML-Grundgerüst und vielleicht noch n Body mit Inhalt ausgebe(via print) zeigt er es doch auch an? Und die File die da bearbeitet wird is ja auch so aufgebaut, also müsste das doch auch so gehn?
So richtig versteh ichs immer noch nich.
 
Zurück