EIN benutzer sendet "Premature end of script headers"
Alain
- perl
Morgen Leut,
Ich weiss nicht was wieder los ist,da ich mir immer bemühe alles perfekt zu machen,gelingt es gewissen benutzern immer wieder,doch noch etwas falsch zu machen.So nun zum problem:Ich habe ein einfaches perl script geschrieben um urls per submit button weiter zuleiten in html siehts so aus:
<form action="../cgi-bin/jump.cgi" method="GET" target="page1"><select name="url" onchange="if (this.options[this.selectedIndex].value){window.open(this.options[this.selectedIndex].value,'page1')}">
<option selected value="">Mainpages</option>
<option value="http://www.domain.com/y22.htm">Mainpage Nr.22</option>
</form>
Das kleine script dafür war:
#!/usr/bin/perl -w
use CGI;
use strict;
my $url = CGI::param('url')||'';
if ($url)
{
Redirect();
}
else
{
print "Content-type: text/html\r\n\r\n";
print "<HTML><HEAD><TITLE>error</TITLE></HEAD>\n";
print "<BODY>";
print "<H3>Error - select a page first...and then click on "go"</h3>";
print "Please use your browser's back button to return to the main site and try again.\n";
print "<P>";
print "</BODY>";
print "</HTML>";
}
exit(1);
sub Redirect {
print "Status: 302 Found\n";
print "Location: $url\n";
print "URI: <$url>\n";
print "Content-type: text/html\r\n\r\n";
}end
Kann mir jemand sagen,was daran nun noch falsch ist?
Könnte es eventuell das exit(1) sein?
Im error log stand nur Premature end of script headers.
In all meinen Browser typen Moz,NS7,IE5,Firefox... läuft es wunderbar im übrigen.
Grüsse
Alain
hi,
hilft dir http://suche.de.selfhtml.org/cgi-bin/such.pl?suchausdruck=Premature+end+of+script+headers&lang=on&feld=alle&index_5=on&index_6=on&hits=100 weiter?
gruß,
wahsaga
hi,
hilft dir http://suche.de.selfhtml.org/cgi-bin/such.pl?suchausdruck=Premature+end+of+script+headers&lang=on&feld=alle&index_5=on&index_6=on&hits=100 weiter?
danke für den Hinweis ;-)
Möglicherweise könnte das problem am ohne "\n" nach dem else zweig gewesen sein,aber nur möglicherweise.
Leider ist der fehler sehr dürftig im errorolog und es dürfte somit schwierig sein den fehler zu finden,weil
1.Bei mir läuft alles,auch wenn ich den else zweig ausführen lasse...
2.Fehlermeldung nicht eindeutig...weiss nur dass es ein 500error war
Desshalb meine frage hier,obwohl wie Du richtig erkannt hast,es einige hinweise darauf gibt,weiss ich eigentlich nicht wo ich nach was suchen soll,da kein genauer (fehler)hinweis vorhanden ist...
Das problem war bisher noch nicht aufgetreten bei diesem script,es war bis jetzt der erste benutzer der sowas schaffte-keine ahnung wie und womit (vermutlich IE6)er das tat.
Gruss
Alain
hi,
so ich habe das script nun nochmal über-bearbeitet ganz nach dem style von selhtml.
Es geht so,aber es wäre mir lieb,falls jemand noch einen fehler findet,es mir mit einem kurzen hinweis mitteilen könnte.
Hier das script:
#!/usr/bin/perl -w
use strict;
use CGI;
my $cgi = new CGI;
use CGI::Carp qw(fatalsToBrowser);
my $url = CGI::param('url')||'';
if ($url)
{
redirect();
}
else
{
$cgi->default_dtd('-//W3C//DTD HTML 4.01 Transitional//EN');
print $cgi->header(-type =>'text/html'),
$cgi->start_html('Error request'),
$cgi->b('<H3>Error - select a page first...and then click on "go"</h3><br>
Please use your browser's back button to return to the main site and try it again.'),
$cgi->end_html();
}
exit(1);
sub redirect {
print $cgi->redirect($url);
}
Gruss
Alain
Es geht so,aber es wäre mir lieb,falls jemand noch einen fehler findet,es mir mit einem kurzen hinweis mitteilen könnte.
Nö, Fehler nicht.
Hier das script:
#!/usr/bin/perl -wuse strict;
use CGI;
my $cgi = new CGI;
use CGI::Carp qw(fatalsToBrowser);my $url = CGI::param('url')||'';
Hier kanst du das Objekt nutzen:
my $url = $cgi->param('url');
Den Default Wert brauchst du in diesem Fall nicht.
if ($url)
{
redirect();
}
else
{
$cgi->default_dtd('-//W3C//DTD HTML 4.01 Transitional//EN');
print $cgi->header(-type =>'text/html'),
$cgi->start_html('Error request'),
$cgi->b('<H3>Error - select a page first...and then click on "go"</h3><br>
Please use your browser's back button to return to the main site and try it again.'),
$cgi->end_html();
Naja, wenn schon denn schon:
print $cgi->header(),
$cgi->start_html(-title => 'Error request'),
$cgi->h3( 'Error - select a page first...and then click on "go"' ),
$cgi->p( $cgi->b('Please use your browser's back button to return to the main site and try it again.')),
$cgi->end_html();
Ein Blockelement in einem inline Element geht nicht und type text/html ist der Defaultwert.
}
exit(1);
das ist überflüssig darüber hinaus signalisierst du mit einem exit ungleich null, das bei der Programmausführung ein Fehler aufgetreten ist.
Eigentlich kann kein 500'er bei dem Programm auftreten.
Struppi.
Hi Struppi,
Naja, wenn schon denn schon:
print $cgi->header(),
$cgi->start_html(-title => 'Error request'),
aber da brauch ich doch kein -title?der titel wird automatisch übergeben,wenn ich es so $cgi->start_html('Error request') schreibe .
$cgi->h3( 'Error - select a page first...and then click on "go"' ),
$cgi->p( $cgi->b('Please use your browser's back button to return to the main site and try it again.')),
$cgi->end_html();Ein Blockelement in einem inline Element geht nicht und type text/html ist der Defaultwert.
aha ok.
}
exit(1);
das würde einen 500er auslösen?!
das ist überflüssig darüber hinaus signalisierst du mit einem exit ungleich null, das bei der Programmausführung ein Fehler aufgetreten ist.
Ok werd ich versuchen.
Thx
Alain
Naja, wenn schon denn schon:
print $cgi->header(),
$cgi->start_html(-title => 'Error request'),aber da brauch ich doch kein -title?der titel wird automatisch übergeben,wenn ich es so $cgi->start_html('Error request') schreibe .
Brauchen nicht, da aber die funktion eine ganze Reihe von anderen Parametern akzeptiert, kann es der Übersicht dienen, diese Schreibweise zu verwenden, du weißt so immer was dieser Parameter bedeutet (falls mehr dazu kommen)
}
exit(1);
das würde einen 500er auslösen?!
Nein, ich glaub nicht.
Struppi.