Micha: Abschicken und (oder) Vorschau

Hallo Zusammen ,

ich bin schon seit paar Stunden am Skript.

Im Formular gibt es ein Button "Abschicken" und (oder) "Vorschau"

Jedoch erkennt dieses Skript dies nicht. Der fehler müßte an Zeile 40 liegen,
aber WO ist da der Fehler?? Ich bin am verzweifeln.....

---
&referer_test;

if ($ENV{'CONTENT_LENGTH'} == 0 ) { &fehler }

Ende des Tests

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@feldpaare = split(/&/, $buffer);
foreach $paar (@feldpaare) {
($feldname, $wert) = split(/=/, $paar);
$wert =~ tr/+/ /;
$wert =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FM{$feldname} = $wert;
}

absender

($absenderUserFound,$absenderEmail)=&absenderVerifyUser($FM{'absendername'},$FM{'pwd'});

if ($absenderUserFound) {
&ausgabe2;
} else {
&falsch2;
}

empfänger

sub ausgabe2 {

($UserFound,$Email)=&VerifyUser($FM{'username'});

if ($UserFound) {
&ausgabe;
} else {
&falsch;
}

checken ob Vorschau oder gleich senden

sub ausgabe {

if ($FM{'Abschicken'} ne "") {
&senden;
}

elsif  ($FM{'Vorschau'} ne "") {
&vorschau;

}
}

Hierbei kommt immer folgende Fehlermeldung:

CGI Error

The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:

Ich habe es auch mal so versucht:

&referer_test;

if ($ENV{'CONTENT_LENGTH'} == 0 ) { &fehler }

Ende des Tests

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@feldpaare = split(/&/, $buffer);
foreach $paar (@feldpaare) {
($feldname, $wert) = split(/=/, $paar);
$wert =~ tr/+/ /;
$wert =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FM{$feldname} = $wert;
}

absender

($absenderUserFound,$absenderEmail)=&absenderVerifyUser($FM{'absendername'},$FM{'pwd'});

if ($absenderUserFound) {
&ausgabe2;
} else {
&falsch2;
}

empfänger

sub ausgabe2 {

($UserFound,$Email)=&VerifyUser($FM{'username'});

if ($UserFound) {
&ausgabe;
} else {
&falsch;
}

checken ob Vorschau oder gleich senden

sub ausgabe {

if ($FM{'Abschicken'} ne "") {
&senden;
}

elsif  ($FM{'Vorschau'} ne "") {
&vorschau;

}
}

eMail versenden

Auch das haut nicht hin.

:-((((((((((

Schöne Grüße, Micha

  1. Hallo Micha,

    sub ausgabe2 {

    ($UserFound,$Email)=&VerifyUser($FM{'username'});

    if ($UserFound) {
    &ausgabe;
    } else {
    &falsch;
    }

    } #!!!!!!!

    es könnte daran liegen, dass die Sub 'ausgabe2' nicht mit einem '}' abgeschlossen ist.

    Ausserdem solltest du bei der Ausgabe von Text an den Browser immer ' print "Content-type: text/html\n\n"; ' vor die anderen 'print'-Angaben schreiben. Das kann dir Ärger mit HTML-Headern ersparen. So z.B.

    print "Content-type: text/html\n\n";
    print "Test\n";

    MfG Florian Auer

    1. Hallo Florian,

      danke für Deine Antwort!

      es könnte daran liegen, dass die Sub 'ausgabe2' nicht mit einem '}' abgeschlossen ist.

      Nein, dann würde die Fehlermeldung so lauten:
      CGI Error

      ---Schipp---
      The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:

      Missing right bracket at..........
      ---Schnapp---

      Aber es kommt nur:

      ---Schnipp---
      The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:
      ---Schnapp---

      Ausserdem solltest du bei der Ausgabe von Text an den Browser immer ' print "Content-type: text/html\n\n"; ' vor die anderen 'print'-Angaben schreiben. Das kann dir Ärger mit HTML-Headern ersparen. So z.B.

      print "Content-type: text/html\n\n";
      print "Test\n";

      Das ist auch schon drin.

      Schöne Grüße, Micha

    2. Hallo Florian,

      um nochmal konkreter auszudrücken;

      Diese Zeilen steht in der html-Datei:

      <input type="submit" value="Abschicken"> <input type="submit" value="Vorschau"> <input type="reset" value="löschen">

      Diese Zeilen spricht im Skript folgende Zeilen nicht an:

      if ($FM{'Abschicken'} ne "") {
      &senden;
      }

      elsif  ($FM{'Vorschau'} ne "") {
      &vorschau;
      }

      1. Hallo Micha!

        <input type="submit" value="Abschicken"> <input type="submit" value="Vorschau"> <input type="reset" value="löschen">

        Ich bin kein Perl-Profi, aber muesste die Zeile in der HTML-Datei nicht so aussehen:

        <input type="submit" name="abschicken" value="Abschicken"> <input type="submit" name="vorschau" value="Vorschau">

        Die Abfrage im Script erfolgt dann z. B. mit:

        if ($FORM{'abschicken'} ne "") {
           &senden
        }
        else {
           &vorschau
        }

        Viele Gruesse
        Harald

        1. Ich bin kein Perl-Profi, aber muesste die Zeile in der HTML-Datei nicht so aussehen:

          <input type="submit" name="abschicken" value="Abschicken"> <input type="submit" name="vorschau" value="Vorschau">

          Die Abfrage im Script erfolgt dann z. B. mit:

          if ($FORM{'abschicken'} ne "") {
             &senden
          }
          else {
             &vorschau
          }

          Viele Gruesse
          Harald

          Hallo Harald,

          vielen lieben Dank! Jetzt funzt es wunderbar. Ich war wahrscheinlich zu müde und habe diesen Fehler übersehen.  ;-))

          Nochmals danke und schöne Grüße,

          Micha