#!/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; # ------------ 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 $fehler) = @_;           } ################################################################## 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: $!"; ### Line 130 ### print MAIL "To: $email_list[$recipient, $recipient_bcc]\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"; ### Line 169 ### print <<"ENDE"   xyz4711 >> Kontaktformular - Daten Erfolgreich versendet !  



Vielen Dank

Herr/Frau $input05, $input06, daß Sie sich die Zeit genommen haben um dieses Formular auszufüllen.

Ihre Daten sind am $date um $time Uhr erfolgreich an xyz4711 übermittelt worden.

Sie werden in $weiterleitungszeit Sekunden automatisch zur Startseite des xyz weitergeleitet.

Falls ihr Browser dies nicht tut, klicken Sie bitte folgenden Link an:
Zurück zur Hauptseite

Mit freundlichem Gruß

Ihr xyz4711    ||    © Webmaster
ENDE                  } ################################################################# # ------------ Ergebnis-Seite bei Fehlern ------------ sub missing { local (my $what) = @_; print "Content-type: text/html\n\n"; ### Line 203 ### print <<"FIN"   xyz4711 >> Kontaktformular - Es traten Fehler auf !  



Achtung FEHLER

Leider traten beim ausfüllen des Formulars Fehler auf:

Es wurde folgendes vergessen:
$what

Folgende Eingabefehler wurden falsch ausgefüllt:
$fehler

Bitte gehen Sie mit dem Zurück Knopf ihres Browsers wieder zum Formular und vervollständigen Sie bitte die oben genannten Daten. Vielen Dank.

Mit freundlichem Gruß

Ihr xyz4711    ||    © Webmaster
FIN            } #################################################################