MartinS: Einfacher Form-Mailer ohne weiterleitung

Hallo Forumgemeinde,

unter der adresse:

http://aktuell.de.selfhtml.org/artikel/cgiperl/form-mail/index.htm

ist ein guter Form-Mailer erklärt den ich erfolgreich ausprobieren konnte. Ich würde gerne den selben Formmailer verwenden, allerdings ohne Weiterleitung auf eine Dankesseite, da dies per javascript erfolgt.

Ich habe daher aus dem Perlscript die Zeilen entfernt die die Weiterleitungsadresse aus dem Formular auslesen, also:

$returnhtml = $query->param('return');    # ---> URL für Dankeseite

und:

if($name ne "return" && $name ne "subject" && $name ne "delimiter") {

wie folgt geändert:

if($name ne "subject" && $name ne "delimiter") {

Die Zeile 48, also:

print "Location: $returnhtml\n\n";

habe ich komplett entfernt, zusammen mit dem hidden field im html welches die Weiterleitungsadresse enthält.

Wenn ich das Perl script nun ausführe, wird das Formular zwar erfolgreich versendet, ich erhalte allerdings einen "Internal Server Error 500" den ich nicht nachvollziehen kann.

kann mir bitte jemand helfen die Weiterleitung in diesem Script zu deaktivieren ?

Viele Grüsse,
Martin S.

  1. hi,

    print "Location: $returnhtml\n\n";

    habe ich komplett entfernt, zusammen mit dem hidden field im html welches die Weiterleitungsadresse enthält.

    Das war die "Weiterleitung". Der Internal Server Error kommt zwangsläufig, weil Dein Script nichts ausgibt. Also entweder Redirection oder was ausgeben, header nicht vergessen.

    Mach ein
    print "Content-Type: text/html\n\n";
    print "<p>Mail verschickt, Danke!</p>\n";

    und alles wird gut.

    roro

    1. Hallo roro,

      Herzlichen Dank ! Jetzt hab ich die gesamte Dankesseite einfach ins Perl Script verfrachtet und es klappt alles wie gewünscht.

      Grüsse,
      Martin S.

      1. Danke auch ;-)

        Ich persönlich finde eine Redirection trotzem besser, weil manche Besucher nach einem POST den reload-Button klicken und, nachdem die Konfirmation "erneut senden" mit ja beantwortet wurde, die Mail nochmal rausschicken.

        Falls Du wieder auf die Umleitung umsteigen willst, machs richtig mit statusAusgabe:

        einfache Umleitung

        sub redirection{
         my $url = shift;
         print "Status: 302 Moved\n";
         print "location: $url\n\n";
         return;
        }

        roro

        1. Hallo roro,

          auch für diesen Hinweis danke ich. Soeben habe ich noch zwei Nachteile entdeckt, wenn mann nachdem das Formular versendet wurde auf den "zurück" button im browser klickt, sind die Formulardaten immer noch im Formular, logisch. Zudem steht die Adresse des Perl scripts dann in der Adressleiste wenn das Formular erfolgreich versendet wurde.

          Ich hatte ursprünglich auf eine Lösung ohne jegliche Weiterleitung gehofft, aber ohne "Ausgabe des Scripts" geht ja nichts. Gibt es eine Möglichkeit die "Ausgabe" so zu verändern daß die Formularseite im Browser unverändert stehen bleibt ? (Also kein PRINT)

          Vielen Dank für Deine Hilfe. Ich bin ein absoluter Perlnoop !

          Grüsse,
          Martin S.

          1. hi,

            Ich hatte ursprünglich auf eine Lösung ohne jegliche Weiterleitung gehofft, aber ohne "Ausgabe des Scripts" geht ja nichts. Gibt es eine Möglichkeit die "Ausgabe" so zu verändern daß die Formularseite im Browser unverändert stehen bleibt ? (Also kein PRINT)

            Geht mit ner Umleitung ;-)
            Aber warum das Formular neu zeigen? Das würde mich als Besucher irritieren, auch wenn im Formulat drinstehen würde, dass die Mail raus ist.

            Vorschlag: Leite auf eine schöne Antwortseite um und mache in dieser auf weitere interessante Angebote auf Deinem Web aufmerksam, Teaser setzen, "danke für Feedback, <a href="/guggmal.html">hier</a> hab ich noch was für neugierige Besucher....

            roro

            1. Hi roro,

              Geht mit ner Umleitung ;-)

              Ok ! Ich finde mich mit der Lösung ab dass die Dankessagung für das ausgefüllte Formular innerhalb des Perl scripts liegt. Eine Umleitung ist für mich nicht so wichtig, da ich die entsprechenden Links auch auf der Dankesseite anbieten kann.

              Vielen Dank auf jeden Fall für die turboschnelle Hilfe !

              Grüsse,
              Martin S.