#!/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"; 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 das xyz4711 übermittelt worden.

Sie werden in $weiterleitungszeit Sekunden automatisch zur Startseite des xyz4711 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 { my ($what) = @_; print "Content-type: text/html\n\n"; 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 } #################################################################