#!/usr/bin/perl
# Pfad zu Prel
###################################################################
# Perl-Programm ist für Übergabemethode POST sowie GET geeignet:
use CGI;
my $cgi = CGI->new();
my %FORM = $cgi->Vars();
##################################################################
use strict;
use warnings;
my $fehler = "";
# ------------ Pfad zum Mailprogramm ------------
my $mailprog = '/usr/sbin/sendmail';
# Pfad zum Date-Kommando:
my $date = '/usr/bin/date';
# OS auf dem das Programm eingesetzt wird (Server)! UNIX / WINDOWS
my $os = "UNIX";
# Weiterleitungs-URL nach dem Versenden der Formulardaten
my $returnurl = "http://www.xyz4711.de/index.html";
# Zeitspanne in Sekunden nach der auf die $returnurl weitergeleitet wird:
my $weiterleitungszeit = 5;
# E-Mail Adresse des Empfängers (mit \@):
my @email_list = ('info@xyz4711.de', 'webmaster@xyz4711.de');
###################################################################
# ------------------ Formular-Elemente ------------------
my $recipient = $FORM{'recipient'};
my $recipient_bcc = $FORM{'recipient_bcc'};
my $subject = $FORM{'subject'};
my $CB01 = $FORM{'Kacheloefen'};
my $CB02 = $FORM{'Kaminoefen'};
my $CB03 = $FORM{'Herde'};
my $CB04 = $FORM{'Heizkamine'};
my $input05 = $FORM{'Vorname'};
my $input06 = $FORM{'Nachname'};
my $input07 = $FORM{'Strasse'};
my $input08 = $FORM{'PLZ'};
my $input09 = $FORM{'Ort'};
my $input10 = $FORM{'Land'};
my $input11 = $FORM{'Telefon'};
my $input12 = $FORM{'Telefax'};
my $input13 = $FORM{'eMail'};
my $input14 = $FORM{'Betreff'};
my $input15 = $FORM{'Text'};
###################################################################
$input15 =~ s/\cM//g;
$input15 =~ s/\n/ /g;
###################################################################
# ------- Check auf fehlende und falsche Eingabe -------
&missing('Vorname') unless $input05;
&missing('Nachname') unless $input06;
&missing('eMail') unless $input13;
&missing('Text') unless $input15;
&falsch('Fehler 01: Bitte eine gueltige Postleitzahl(PLZ) eingeben !') unless ($input08 =~ m/^\d{5}$/);
&falsch('Fehler 02: Bitte eine gueltige eMail Adresse eingeben !') unless ($input13 =~ m/^[a-zA-Z0-9][-\_\.]*[a-zA-Z0-9]\@[a-zA-Z0-9][-\_\.]*[a-zA-Z0-9]\.([a-zA-Z]){2,4}$/);
&falsch('Fehler 03: Bitte eine gueltige Telefonnummer eingeben !') unless ($input11 =~ m/^[0]\d+.\d+$/);
&falsch('Fehler 04: Bitte eine gueltige Telefaxnummer eingeben !') unless ($input12 =~ m/^[0]\d+.\d+$/);
&falsch('Fehler 05: Bitte einen gueltigen Strassennamen eingeben !') unless ($input07 =~ m/\w?\-\w/);
&falsch('Fehler 06: Bitte einen gueltigen Ortsnamen eingeben !') unless ($input09 =~ m/\D/);
&falsch('Fehler 07: Bitte einen gueltigen Landesnamen eingeben !') unless ($input09 =~ m/\D/);
sub falsch {
my ($error) = @_;
$fehler .= $error;
}
##################################################################
if($os eq "UNIX")
{
&SendIt;
} else {("Fehler: Sendmail kann nicht gefunden werden!");
}
&PrintResponse;
###################################################################
# ------------ Remote_Host auslesen (Variante für 1&1) ------------
# Using Socket-Library
use Socket;
# Fatal-Fehler an den Browser schicken
use CGI::Carp 'fatalsToBrowser';
# Die Variable $ipaddr auf die Remote IP-Adresse setzten
my $ipaddr = $ENV{'REMOTE_ADDR'};
# Die IP muss codiert werden:
my $iptocheck = inet_aton($ipaddr);
# Host-Lookup auf die codierte IP machen:
my $hostname = gethostbyaddr($iptocheck, AF_INET);
###################################################################
# ------------ Datums und Zeitstempel ------------
my @days = ("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
my @months = ("Januar", "Februar", "Maerz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");
(my $sec, my $min, my $hour, my $mday, my $mon, my $year, my $wday, my $yday, my $isdst) = localtime(time);
my $time = sprinf("%02d:%02d:%02d", $hour, $min, $sec);
$year += 1900;
$date = "$days[$wday], $mday. $months[$mon] $year";
##################################################################
# ------------ Counter-Funktion ------------
my $countfile = 'formcount.txt';
my $count = 'cat $countfile';
chop($count);
$count = $count + 1;
open (INF, ">$countfile");
print INF "$count\n";
close (INF);
###################################################################
# ---------- Empfänger-Mail aus den Formulardaten (im TXT-Format) ----------
sub SendIt {
open (MAIL, "|$mailprog -oit") || die "Kann Sendmail nicht starten: $!";
print MAIL "To: $email_list[0], $email_list[1]\n";
print MAIL "From: $input05, $input06\n\n";
print MAIL "------ KUNDENANFRAGE via WebFormular ------\n";
print MAIL "===========================================\n";
print MAIL "Subject: $subject - ";
if ($FORM{'Betreff'} ne "") {print MAIL "$FORM{'Betreff'}\n";}
print MAIL "===========================================\n";
print MAIL "Text des Kunden:\n";
print MAIL "$input15\n";
print MAIL "===========================================\n";
print MAIL "Kunde interessiert sich fuer:\n\n";
if ($FORM{'Kacheloefen'} ne "") {print MAIL "$FORM{'Kacheloefen'}\n";}
if ($FORM{'Kaminoefen'} ne "") {print MAIL "$FORM{'Kaminoefen'}\n";}
if ($FORM{'Herde'} ne "") {print MAIL "$FORM{'Herde'}\n";}
if ($FORM{'Heizkamine'} ne "") {print MAIL "$FORM{'Heizkamine'}\n\n";}
print MAIL "===========================================\n";
print MAIL "Kundendaten:\n\n";
print MAIL "$input05, $input06\n";
if ($FORM{'Strasse'} ne "" and $FORM{'Strasse'}ne "Musterweg 10") {print MAIL "$FORM{'Strasse'}\n\n";}
if ($FORM{'PLZ'} ne "" and $FORM{'PLZ'}ne "12345") {print MAIL "$FORM{'PLZ'}";}
if ($FORM{'Ort'} ne "" and $FORM{'Ort'}ne "Musterhausen") {print MAIL "$FORM{'Ort'}\n";}
if ($FORM{'Land'} ne "" and $FORM{'Land'}ne "Musterland") {print MAIL "$FORM{'Land'}\n\n";}
if ($FORM{'Telefon'} ne "" and $FORM{'Telefon'}ne "08382-72176") {print MAIL "Tel.: $FORM{'Telefon'}\n";}
if ($FORM{'Telefax'} ne "" and $FORM{'Telefax'}ne "08382-75140") {print MAIL "Fax.: $FORM{'Telefax'}\n";}
print MAIL "eMail: $input13\n\n";
print MAIL "===========================================\n";
print MAIL "Das Formular wurde am $date um $time Uhr (MEZ) vom Kunden versendet.\n";
print MAIL "IP des Absenders: $ipaddr\n";
print MAIL "Host des Absenders: $hostname\n\n";
print MAIL "Formular-Nr.: $count\n";
print MAIL "===========================================\n\n";
print MAIL "<<< Dies ist ein Service des Webmasters: xyz4711 >>>";
close (MAIL);
}
##################################################################
# ------------ Ergebnis-Seite bei Erfolg ------------
sub PrintResponse {
print "Content-type: text/html\n\n";
print <<"ENDE";
<html>
<head>
<meta name="Script-Language" content="HTML 4.0">
<title>xyz4711 >> Kontaktformular - Daten Erfolgreich versendet !</title>
<meta http-equiv="refresh" content="$weiterleitungszeit; URL=$returnurl">
</head>
<body text="#FFFFFF" bgcolor="#6B0000" link="#0000FF" vlink="#009900" alink="#FF0000">
<div align="center"><br><br><br>
<table bgcolor="#C0C0C0" width="500" cellspacing="4" cellpadding="4">
<tr>
<td>
<font face="Verdana,Arial,Times" size="-1" color="#000000"><b><font size="+2" color="#00A050"><i>Vielen Dank</i></font><br><br>Herr/Frau <font color="#0000FF">$input05, $input06</font>, daß Sie sich die Zeit genommen haben um dieses Formular auszufüllen.<br><br>Ihre Daten sind am <font color="#0000FF">$date</font> um <font color="#0000FF">$time</font> Uhr <font color="#00A050"><i>erfolgreich</i></font> an das xyz4711 übermittelt worden.<br><br>Sie werden in <font color="#0000FF">$weiterleitungszeit</font> Sekunden automatisch zur Startseite des xyz4711 weitergeleitet.<br><br>Falls ihr Browser dies nicht tut, klicken Sie bitte folgenden Link an:<br><a href="$returnurl">Zurück zur Hauptseite</a><br><br>Mit freundlichem Gruß<br><br><font color="#FFDF00"><i>Ihr xyz4711 || © </i><a href="$email_list[1]"><i>Webmaster</i></a></font></b></font>
</td>
</tr>
</table>
</div>
</body>
</html>
ENDE
}
#################################################################
# ------------ Ergebnis-Seite bei Fehlern ------------
sub missing {
my ($what) = @_;
print "Content-type: text/html\n\n";
print <<"FIN";
<html>
<head>
<meta name="Script-Language" content="HTML 4.0">
<title>xyz4711 >> Kontaktformular - Es traten Fehler auf !</title>
<meta http-equiv="refresh" content="$weiterleitungszeit; URL=$returnurl">
</head>
<body text="#FFFFFF" bgcolor="#6B0000" link="#0000FF" vlink="#009900" alink="#FF0000">
<div align="center"><br><br><br>
<table bgcolor="#C0C0C0" width="500" cellspacing="4" cellpadding="4">
<tr>
<td>
<font face="Verdana,Arial,Times" size="-1" color="#000000"><b><font size="+2">Achtung <font color="#FF0000"><i>FEHLER</i></font></font>
<br><br>
Leider traten beim Ausfüllen des Formulars Fehler auf:<br><br>Es wurde folgendes vergessen:<br><font color="#FF0000"><i>$what</i></font><br><br>Folgende Eingabefehler wurden falsch ausgefüllt:<br><font color="#FF0000"><i>$fehler</i></font><br><br> Bitte gehen Sie mit dem Zurück Knopf ihres Browsers wieder zum Formular und vervollständigen Sie bitte die oben genannten Daten. Vielen Dank.<br><br>Mit freundlichem Gruß<br><br><font color="#FFDF00"><i>Ihr xyz4711 || © </i><a href="$email_list[1]"><i>Webmaster</i></a></font></b></font>
</td>
</tr>
</table>
</div>
</body>
</html>
FIN
}
#################################################################