sorry für das doppelposting, hatte einiges verändert und wollte nicht verwirren. Wenn möglich bitte löschen.Hier nochmal hoffentlich an richtiger Stelle:
mein aktuelles Problem ist folgende Fehlermeldung wenn ich das Formular abschicke:
Premature end of script headers: FormMail.pl
Hier der Teil des Formulars der das Schicken regelt:
--------------------------------------------------------------------
s="meine@email.de";
if (s=="") {s="meine@email.de"}
var sub="";
if (sub.length>0)
{
if (sub.substring(sub.length-1,sub.length)=="/")
{
sub=sub.substring(0,sub.length-1) ;
}
if(sub.search("http") == -1){sub="http://"+sub;}
}
if (""!="")
{
sub=sub+"/"+"";
if (sub.substring(sub.length-1,sub.length)=="/")
{
sub=sub.substring(0,sub.length-1) ;
}
}
if (sub.length>0)
{
sub=sub+"/submit.htm";
}
else
{
sub="submit.htm";
}
if ("1"=="1")
{
document.write("<FORM ACTION="http://www.meine-url.de/cgi-bin/FormMail.pl" METHOD="POST" ONSUBMIT="return Bestellung(this)">");
}
else
{
if ("1"=="2")
{
document.write("<FORM ACTION="http://www.meine-url.de/cgi-bin/FormMail.pl" METHOD="POST" ONSUBMIT="return Bestellung(this)">");
}
else
{
document.write("<FORM ACTION="mailto:"+s+" ?subject=Bestellung von "+Name+"" METHOD="POST" ENCTYPE="text/plain" ONSUBMIT="return Bestellung(this)">");
}
}
document.write("<P>");
document.write("<INPUT TYPE="HIDDEN" NAME="recipient" VALUE=""+s+"">");
document.write("<INPUT TYPE="HIDDEN" NAME="subject" VALUE="Bestellung von "+Name+"">");
document.write("<INPUT TYPE="HIDDEN" NAME="email" VALUE=""+parent.anschrift.E_Mail+"">");
if ("Falsch"!="Wahr")
{
document.write("<INPUT TYPE="HIDDEN" NAME="redirect" VALUE=""+sub+"">");
}
else
{
document.write("<INPUT TYPE="HIDDEN" NAME="afssub" VALUE=""+sub+"">");
}
document.write("<INPUT TYPE="HIDDEN" NAME="ORDER" VALUE=""+bestell+"">");
//-->
</SCRIPT>
----------------------------------------------------------------------
hier mein FormMail.pl:
#!/usr/bin/perl
überprüft und ok
use strict;
use warnings;
use CGI::Carp qw(fatalsToBrowser);
gibt Warnungen an den Browser aus
my $returnhtml = "http://www.meine-url.de/submit.htm";
my $Sendmail_Prog = "/usr/sbin/sendmail -t -i";
überprüft und ok
my $mailto = 'meine@email.de';
use CGI;
my $query = new CGI;
my @names = $query->param;
-------> interne Daten aus den erwarteten hidden-Feldern auslesen:
my $delimiter = $query->param('delimiter'); # ---> Begrenzerzeichen zwischen name und value
my $returnhtml = $query->param('return'); # ---> URL für Dankeseite
my $subject = $query->param('subject'); # ---> E-Mail-Subject
Wir müssen Newlines konvertieren, falls diese vorhanden sind:
$subject =~ s/\s/ /g;
aber wir sind noch nicht fertig.
Für das Subject ist ein spezielles Encoding für Umlaute notwendig:
use Encode qw/encode decode/;
$subject = decode('MIME-B', $subject);
-------> Text der E-Mail aus den Formulardaten ermitteln:
my $mailtext = "";
foreach my $name(@names){
@values = "";
@values = $query->param($name);
if($name ne "return" && $name ne "subject" && $name ne "delimiter") {
foreach my $value (@values) {
$mailtext = $mailtext.$name;
$mailtext = $mailtext.$delimiter;
$mailtext = $mailtext.$value."\n";
}
}
}
-------> E-Mail versenden:
open(MAIL,"|$Sendmail_Prog -t")
or die("Fehler beim Aufruf des mailprogramms $!");
print MAIL "To: $mailto\r\n";
Wir geben Network-Newlines aus!
print MAIL "Subject: $subject\r\n";
schliesse die Header-Sektion ab:
print MAIL "\r\n";
print MAIL "$mailtext\n";
close(MAIL);
-------> Dankeseite an Browser senden:
Wir haben es mit HTTP-Header zu tun:-> Network-Newlines
print "Location: $returnhtml\r\n\r\n";
Das kann an diesem Punkt fehlschlagen wenn Warnungen ausgegeben werden.
-----------------------------------------------------------------------
auf was weisst dieser Fehler hin?
Ich kann weder javascript noch perl.
Was kann ich ändern oder ist offensichtlich falsch?