perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 26
Click for quality!




10.02.2012 / 21:07

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  CGI: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragPremature end of script headers
Seitenanfang
Hallo,

es gibt zwar schon einige Einträge zu o.g. Thema aber ne Lösung für mein Prob war da leider nich dabei :(

Also:

Ich habe folgendes CGI scrip in perl (soll ledigliche eine bewertung mit nutzername und Passwort entgegennehmen und speichern):


#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

# Hier sollen die daten gespeichert werden
my $dateiname = 'bewertung.txt'

# Daten auslesen und in $buffer speichern
if ($ENV{'REQUEST_METHOD'} eq "GET") {
my $buffer = $ENV{'QUERY_STRING'};
} else {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}

# Datenstring zerteilen
@nvpairs = split(/&/,$buffer);
# Ich teile den Datenstring in einzelne Teile.
foreach $pair (@nvpairs) {
# Ich decodiere jedes der Teil
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$in{$name} = $value;
}

# Ausgabe in HTML zur Bestätigung

print "Content-type: text/html \n\n";
print "<HTML><HEAD>\n";
print "<TITLE>Bestätigung</TITLE> \n";
print "</HEAD> \n";
print "<h2>Vielen Dank für Ihre Informationen.</h2>\n";
print "Sie gaben ein:<hr><dl>\n";
print "<dd>Ihr Name: $in{'nutzer'}\n";
print "<dd>Ihre Bewertung: $in{'bewertung'}\n";
print "<dd>Ihre Begründung: $in{'begruendung'}\n";
print "<p>";

#Speichern der Daten in bewertung.txt

open(filehandle,">>$dateiname")
|| &Fehlermeldung("Kann die Datei $dateiname nicht öffnen!");
print filehandle "-------Neuer Eintrag-------\n";
print filehandle "Nutzer = $in{'nutzer'}\n";
print filehandle "Passwort = $in{'kennwort'}\n";
print filehandle "bewertung = $in{'bewertung'}\n";
print filehandle "begruendung: $in{'begruendung'}\n\n";
close filehandle;

print "</HTML>\n";
# HTML-Dokument schliessen
exit(0);

#subroutine zur Fehlerbehandlung beim öffnen der Datei

sub Fehlermeldung {
my $text= shift;
print "<P><center>Es ist ein Fehler aufgetreten:<br>";
print "$text\n";
print "</center>";
print "<p>Programm wird abgebrochen.\n";
print "</HTML>\n";
exit(1);
}

Die datei liegt im verzeichnis cgi-bin und hat die Rechte 755. Daran sollte es also nich liegen.

Ich benutze einen Apache Webserver. Habe bei den "options" ExecCGI noch hinzugfügt. Hier ist allerdings weiter unten noch dieser eintrag:

# "/Apache2//cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/Apache2//cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>

Hier hab ich Options auch schon auf All gehabt, hat aber nichts gebracht.

Woran könnte diese Fehlermeldung liegen?

Danke euch schonmal im Voraus.

Liebe Grüße und Gute Nacht ... Jana :)

Datum: 08.01.2006-01:28

Beitragre: Premature end of script headers
Seitenanfang
Hi,

# Hier sollen die daten gespeichert werden
my $dateiname = 'bewertung.txt'

Da fehlt das abschließende Semikolon. ;-)

-uw

Datum: 08.01.2006-06:09

Beitragre: Premature end of script headers
Seitenanfang
Hallo,

danke für die Antwort.

Hab das semikolon gesetzt und das "my" vor buffer rausgenommen.

bekomme jetzt die fehlermeldung:

Global symbol "$buffer" requires explicit package name at bewertung.pl line 19.

und das noch für sämtliche andere variablen.

Wenn ich nun schreibe:


my $dateiname = 'bewertung.txt';
my $buffer;

bleibt die Fehlermeldung die selbe.

????????????? *heul*

Datum: 08.01.2006-15:12

Beitragre: Premature end of script headers
Seitenanfang
Hi,

sorry, das hatte ich übersehen. Variablen sollten nicht innerhalb einer if Abfrage initialisiert werden.

-uw

Datum: 09.01.2006-00:11

Beitragre: Premature end of script headers
Seitenanfang
Hallo,

Versuche mal das hier:


#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

# Hier sollen die daten gespeichert werden
my $dateiname = 'bewertung.txt';
my ($buffer,$pair,$value,$name);
my @nvpairs;
my %in;

# Daten auslesen und in $buffer speichern
if ($ENV{'REQUEST_METHOD'} eq "GET") {
$buffer = $ENV{'QUERY_STRING'};
} else {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}

# Datenstring zerteilen
@nvpairs = split(/&/,$buffer);
# Ich teile den Datenstring in einzelne Teile.
foreach $pair (@nvpairs) {
# Ich decodiere jedes der Teil
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$in{$name} = $value;
}

# Ausgabe in HTML zur Bestätigung

print "Content-type: text/html \n\n";
print "<HTML><HEAD>\n";
print "<TITLE>Bestätigung</TITLE> \n";
print "</HEAD> \n";
print "<h2>Vielen Dank für Ihre Informationen.</h2>\n";
print "Sie gaben ein:<hr><dl>\n";
print "<dd>Ihr Name: $in{'nutzer'}\n";
print "<dd>Ihre Bewertung: $in{'bewertung'}\n";
print "<dd>Ihre Begründung: $in{'begruendung'}\n";
print "<p>";

#Speichern der Daten in bewertung.txt

open(FH,">>$dateiname")
|| &Fehlermeldung("Kann die Datei $dateiname nicht öffnen!");
print FH "-------Neuer Eintrag-------\n";
print FH "Nutzer = $in{'nutzer'}\n";
print FH "Passwort = $in{'kennwort'}\n";
print FH "bewertung = $in{'bewertung'}\n";
print FH "begruendung: $in{'begruendung'}\n\n";
close FH;

print "</HTML>\n";
# HTML-Dokument schliessen
exit(0);

#subroutine zur Fehlerbehandlung beim öffnen der Datei

sub Fehlermeldung {
my $text= shift;
print "<P><center>Es ist ein Fehler aufgetreten:<br>";
print "$text\n";
print "</center>";
print "<p>Programm wird abgebrochen.\n";
print "</HTML>\n";
exit(1);
}

Es ist zwar ein Stilfrage, aber ich deklariere gern die Variablen am Scriptanfang. Das hilft Übersicht zu behalten.
Allerdings kann ich nicht verstehen, warum Du CGI::Carp verwendest, das CGI-Modul aber nicht.

Ciao
Ingo

Datum: 08.01.2006-16:46

Beitragre: Premature end of script headers
Seitenanfang
Hallo Ingo,

DANKE DANKE DANKE!!!

Funktioniert jetzt alles bestens!! :)

Liebe Grüße, Jana

Datum: 09.01.2006-14:29

-






-
-