Hallo,
erstmal wollte ich ein Lob aussprechen und zwar für die Tools die man hier erhält. So nun zu meinem Problem und zwar wenn man beim Kontaktformular die Felder ausfülle und die Mail versende, bekomme dann nur eine Mail mit folgendem Text in meinem POP Postfach an: Gesendet am: Donnerstag, 28. September 2006 um 15:36:10 Uhr ansonsten fehlen alle ausgefüllten Pflichtfelder und der Text, wie kommts?
Brauche HILFE ?
Gruss
Hier der Quellcode des Kontaktformulars, hoffe Ihr könnt mir weiterhelfen !
Quellcode:
#!/usr/bin/perl
use CGI::Carp qw(fatalsToBrowser);
require "mailsetup.pl";
&formparser;
foreach ("/usr/sbin/sendmail","/usr/lib/sendmail","/usr/bin/sendmail","/usr/share/sendmail","/var/qmail/bin/sendmail","/usr/bin/sendmail.restart","/etc/sendmail.cf","/etc/sendmail.cw","/usr/man/man8/sendmail.8","/var/qmail/bin/qmail-inject"){
if(-e $_ && -X _){
$mailprogamm = $_;
last;
}
}
################################################## #
# alle Formfelder
$Name = &maildatensaver($FORM{'Name'});
$Vorname = &maildatensaver($FORM{'Vorname'});
$StraeundNr = &maildatensaver($FORM{'StraeundNr'});
$Postleitzahl = &maildatensaver($FORM{'Postleitzahl'});
$Ort = &maildatensaver($FORM{'Ort'});
$Land = &maildatensaver($FORM{'Land'});
$Telefonnummer = &maildatensaver($FORM{'Telefonnummer'});
$Email = &maildatensaver($FORM{'Email'});
$Anfrage = &maildatensaver($FORM{'Anfrage'});
################################################## #
# Fehlerbehandlung Anfang
$fehlermeldung = "" ;
$fehler_gefunden = "" ;
#--------CHECK fuer: Name-----------------------------
$errormeldung = "[*]Das Feld \"Name\" darf nur Buchstaben von A-Z und a-z beinhalten.\n" ;
if ($Name =~ /[^a-zA-Z]/) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }
#-------------------------------------
#--------CHECK fuer: Vorname-----------------------------
$errormeldung = "[*]Das Feld \"Vorname\" darf nur Buchstaben von A-Z und a-z beinhalten.\n" ;
if ($Vorname =~ /[^a-zA-Z]/) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }
#-------------------------------------
#--------CHECK fuer: Straße und Nr.-----------------------------
$errormeldung = "[*]Das Feld \"Straße und Nr.\" wurde nicht oder nicht mit korrekten Daten ausgefüllt.\n" ;
if ($StraeundNr eq '') {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }
#-------------------------------------
#--------CHECK fuer: Postleitzahl-----------------------------
$errormeldung = "[*]Das Feld \"Postleitzahl\" darf nur Zahlen von 0 - 9 beinhalten.\n" ;
if ($Postleitzahl =~ /[^0-9]/) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }
#-------------------------------------
#--------CHECK fuer: Ort-----------------------------
$errormeldung = "[*]Das Feld \"Ort\" darf nur Buchstaben von A-Z und a-z beinhalten.\n" ;
if ($Ort =~ /[^a-zA-Z]/) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }
#-------------------------------------
#--------CHECK fuer: Land-----------------------------
$errormeldung = "[*]Das Feld \"Land\" darf nur Buchstaben von A-Z und a-z beinhalten.\n" ;
if ($Land =~ /[^a-zA-Z]/) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }
#-------------------------------------
#--------CHECK fuer: Telefon-----------------------------
$errormeldung = "[*]Das Feld \"Telefon\" darf nur Zahlen von 0 - 9 beinhalten.\n" ;
if ($Telefonnummer =~ /[^0-9]/) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }
#-------------------------------------
#--------CHECK fuer: Ihre Anfrage-----------------------------
$errormeldung = "[*]Das Feld \"Ihre Anfrage\" wurde nicht oder nicht mit korrekten Daten ausgefüllt.\n" ;
if ($Anfrage eq '') {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }
#-------------------------------------
if ($fehler_gefunden) {
&fehlerausgabe;
exit;
}
# Fehlerbehandlung Ende
################################################## #
&floodcheck;
&datumsroutine;
&mailsenden;
&bestaetigung;
sub mailsenden {
# Mail senden
my $mailbodykontakt = <<MBT;
MBT
if (!$email) {
$email = $empfaengermail;
}
if (!$betreff) {
$betreff = "Mail von Ihrem Feedbackformular";
}
open (MAIL, "|$mailprogamm -t") || die $!;
print MAIL "To: $empfaengermail ($empfaenger)\n";
print MAIL "From: $email \n";
print MAIL "Subject: $betreff\n\n";
print MAIL $mailbodykontakt;
print MAIL "\n\n";
print MAIL "Gesendet am: $datumlang\n";
close(MAIL);
}
################################################## #
sub bestaetigung {
print "Content-type: text/html\n\n";
$meta = qq~<meta http-equiv="refresh" content="$forwardtime; URL=$forwardurl">~;
$titeltext = "Nachricht erfolgreich versendet";
$statustext = qq~
Vielen Dank für Ihre Nachricht.
Sie werden in $forwardtime Sekunden zur Hauptseite weitergeleitet.
Sollte dies nicht funktionieren klicken Sie bitte untenstehen Link.
<div align="center">
Zurück zur Hauptseite</div>
~;
print &tparser("header.html");
print &tparser("mailstatus.html");
print &tparser("footer.html");
exit;
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Fehlerausgabe
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
sub fehlerausgabe {
print "Content-type: text/html\n\n";
$meta = '';
$titeltext = "Fehler festgestellt!";
$statustext = qq~
Beim ausfüllen haben Sie folgendes vergessen:- $fehlermeldung
<div align="center">Bitte gehen Sie «
zurück</div>
~;
print &tparser("header.html");
print &tparser("mailstatus.html");
print &tparser("footer.html");
exit;
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Formdatenparser
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
sub formparser {
read(STDIN, $input, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $input);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$name} = $value;
}
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Templateroutine
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
sub tparser {
my $templatedatei = shift;
my $OUTPUT;
local($/);
open (FILE, "<$templatedatei") or die "Kann Template $templatedatei nicht oeffnen $!\n";
$OUTPUT = <FILE>;
close(FILE);
# Skalarwerte ersetzen
$OUTPUT =~ s/<__\$([\w\-]+)__>/${$1}/g;
# Hashwerte ersetzen
$OUTPUT =~ s/<__\%([\w\-]+)\{([\w\-]+)\}__>/${$1}{$2}/g;
# Arraywerte ersetzen
$OUTPUT =~ s/<__\$([\w\-]+)\[([\w\-]+)\]__>/${$1}[$2]/g;
# Werte ersetzen in der Form $lang{user}
$OUTPUT =~ s/<__\$([\w\-]+)\{([\w\-]+)\}__>/${$1}{$2}/g;
# Werte ersetzen in der Form $input{'action'} oder $lang{'hallo du'}
$OUTPUT =~ s/<__\$([\w\-]+)\{'([\w\- ]+)\'}__>/${$1}{$2}/g;
return $OUTPUT;
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Datumsroutine
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
sub datumsroutine {
@tagekurz = ('So','Mo','Di','Mi','Do','Fr','Sa');
@monatekurz = ('Jan.','Feb.','März','Apr.','Mai.','Jun.','Jul.', 'Aug.','Sept.','Okt.','Nov.','Dez.');
@tage = ('Sonntag','Montag','Dienstag','Mittwoch','Donners tag','Freitag','Samstag');
@monate = ('Januar','Februar','März','April','Mai','Juni','J uli','August','September','Oktober','November','De zember');
($sec, $min, $stunde, $mtag, $mon, $jahr, $tag, $nr_tag, $isdst) = localtime(time);
$monat = $mon+1;
if($monat < 10) { $monat = "0$monat"; }
if($stunde < 10) { $stunde = "0$stunde"; }
if ($min < 10) { $min = "0$min"; }
if ($sec < 10) { $sec = "0$sec"; }
$jahr = 1900 + $jahr;
# Ausgabe z.B. Sonntag, 14. Juli , 2002 um 17:39:43 Uhr
$datumlang = " $tage[$tag], $mtag. $monate[$mon] $jahr um $stunde:$min:$sec Uhr";
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Floodsperre
# - - - - - - - - - - - - - - - - - - - - - - - - - - #
sub floodcheck {
$wartezeit = "1.0";
$sperrlistenlaenge = 15;
my $IP_Nummer = $ENV{'REMOTE_ADDR'};
my $aktionszeit = time();
open(ZEITLIMIT, "floodsperre.dat");
@letzte_eintraege = <ZEITLIMIT>;
close(ZEITLIMIT);
foreach (@letzte_eintraege) {
if (/^$IP_Nummer/){
($junk,$letzte_aktionszeit) = split(/\|!\|/,$_);
chomp($letzte_aktionszeit);
last;
}
} # ende foreach
$wartezeit *= $noflood; # zeit in sek bis neu gepostet werden darf
$floodfehler = 0;
if ( int(($aktionszeit - $letzte_aktionszeit) < $wartezeit)){
$floodfehler = 1;
# Fehlerpruefung
$fehlermeldung = "" ;
$fehler_gefunden = "" ;
# -----------------------------------------------------------------------
$errormeldung = "[*]Sie müssen $wartezeit Sekunden warten bis Sie wieder eine E-Mail absenden können.\n" ;
if ($floodfehler) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }
# -----------------------------------------------------------------------
if ($fehler_gefunden) {
&fehlerausgabe;}
exit;
}
else {
if (unshift(@letzte_eintraege, "$IP_Nummer|!|$aktionszeit\n") > $sperrlistenlaenge){
$#letzte_eintraege = $sperrlistenlaenge;
}
open(ZEITLIMIT, ">floodsperre.dat");
print ZEITLIMIT @letzte_eintraege;
close(ZEITLIMIT);
}
return 1;
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Maildaten vorbereiten
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
sub maildatensaver {
$_[0] =~ s/^\s+//;
$_[0] =~ s/\s+$//;
$_[0] =~ s/`//g;
$_[0] =~ s/\r//g;
$_[0] =~ s/\|//g;
$_[0] =~ s/\n/\n/ig;
return($_[0]);
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #