CGI Formularweiterleitung Sendmail und dann Feedbackbestaetigung
Michael muc
- cgi
Ich glaube mein erster Eintrag ist nicht angekommen... hab wohl was falsch gemacht. :-(
Habe fogendes Problem und hoffe auf eure Hilfe !
Seite tagen und nächten versuche ich unten genanntes CGI-Script so hin zu bekommen, daß es folgendes macht...
Feedbackformular wird weitergeleitet an Sendmail OK - klappt!
Aber dann...
Wenn die Mail gesendet ist, sollte das CGI Script eine neue Seite aufrufen... die Feedbachbestaetigungs-Seite...
Und genau da habe ich das Problem... Habe bald alles auprobiert... bin aber noch Anfänger... leider... mache da bestimmt was falsch.. Die Formulare wurden mit Frontpage erstellt... nach der 0 8 15 Methode... (Vorgaben von Frontpage)
Kann mir bitte einer Helfen ????? Ich breche bald ab und möchte dieses Script zum laufen bekommen :-)
Vorab schonmal vielen Dank !
CGI-Script :
#!c:\apache\perl\bin\perl.exe
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;
if ($allow_html != 1) {
$value =~ s/<([^>]|\n)*>//g;
}
$FORM{$name} = $value;
}
@recipient='Webmaster@xxxxxxxxxxxxxx.de';
@message=($FORM{'kommentar'});
$myaddress=($FORM{'email'});
$realname=($FORM{'name'});
$realname1=($FORM{'organisation'});
$realname2=($FORM{'telefon'});
$returnhtml='http://www.xxxxxxxxxxxxx.de/feedbackbestaetigung.htm'
open (MAIL, "|sendmail.exe -t");
print MAIL "From: $myaddress\n";
print MAIL "To: @recipient[0]\n";
print MAIL "Subject: Feedback\n\n";
print MAIL "Absender_________________________ \n";
print MAIL "$myaddress\n\n";
print MAIL "Angaben Feedbacksender___________ \n";
print MAIL "Ansprechpart.: $realname\n";
print MAIL "Organisaion: $realname1\n";
print MAIL "Telefon: $realname2\n\n";
print MAIL "Mitteilung_______________________ \n\n";
print MAIL "@message[0]\n";
close (MAIL);
print "Content-Type: text/html\n\n";
print "<HTML>";
print "<HEAD>";
print "<TITLE>TEST</TITLE>";
print "</HEAD>";
print "<BODY>";
print "<CENTER><h2>Ihr Formular wurde nun als Email-Formular über diesen Server Versendet... Danke, für das ausfüllen unsere Feedbackformulares bzw. für Ihre Informaitonen</h2></center>";
print "</body>";
print "</html>";
sleep(5)
print "Location: $returnhtml\n\n";
DANKE
Michael
Halihallo Michael
Ich glaube mein erster Eintrag ist nicht angekommen... hab wohl was falsch gemacht. :-(
Link bitte.
Daten auslesen
use CGI;
Mailparameter festlegen für an sich selbst senden
@recipient='Webmaster@xxxxxxxxxxxxxx.de';
Hier sollte eine runde Klammer stehen, nicht aber ...
@message=($FORM{'kommentar'});
...hier, denn die Formulardaten sind nunmal Skalare, auch wenn sie mehrzeilig sind.
$myaddress=($FORM{'email'});
$realname=($FORM{'name'});
$realname1=($FORM{'organisation'});
$realname2=($FORM{'telefon'});
$returnhtml='http://www.xxxxxxxxxxxxx.de/feedbackbestaetigung.htm'
keine runden Klammern bei skalaren Werten. Runde Klammern sind für Arrays und Hashes zu verwenden.
Mail schreiben und an sich selbst senden
open (MAIL, "|sendmail.exe -t");
print MAIL "From: $myaddress\n";
print MAIL "To: @recipient[0]\n";
print MAIL "Subject: Feedback\n\n";
print MAIL "Absender_________________________ \n";
print MAIL "$myaddress\n\n";
print MAIL "Angaben Feedbacksender___________ \n";
print MAIL "Ansprechpart.: $realname\n";
print MAIL "Organisaion: $realname1\n";
print MAIL "Telefon: $realname2\n\n";
print MAIL "Mitteilung_______________________ \n\n";
print MAIL "@message[0]\n";
print MAIL $message[0] um den ersten Eintrag der Liste zu selektieren.
Ausgabe an den Browser
print "Content-Type: text/html\n\n";
[...]
sleep(5)
print "Location: $returnhtml\n\n";
Location ist ein Header, du hast aber bereits Content gesendet. Das Location muss nach Content-Type (allgemeiner: einfach im Header) stehen, sonst wird es nicht interpretiert. Ein Refer auf Clientseite kannst du über
<meta http-equiv="refresh" content="0; URL=...">
realisieren.
Viele Grüsse
Philipp
PS: perldoc perlstyle; use strict; use warnings; perldoc perldata; use Net::SMTP