#!/usr/bin/perl # Pfad zu Prel # ------------ Pfad zum Mailprogramm ------------ $mailprog = '/usr/sbin/sendmail'; # Pfad zum Date-Kommando: $date = '/usr/bin/date'; # OS auf dem das Programm eingesetzt wird (Server)! UNIX / WINDOWS $os = "UNIX"; # Weiterleitungs-URL nach dem Versenden der Formulardaten $returnurl = "http://www.xyz4711.de/index.html"; # Zeitspanne in Sekunden nach der auf die $returnurl weitergeleitet wird: $weiterleitungszeit = 5; # E-Mail Adresse des Empfängers (mit \@): @email_list = ("info\@xyz4711.de", "webmaster\@xyz4711.de"); ################################################################### # Perl-Programm ist für Übergabemethode POST sowie GET geeignet: if ($ENV{"REQUEST_METHODE"} eq "POST")   { read(STDIN, $daten, $ENV{"CONTENT_LENGTH"});   } else {          $daten = $ENV{"QUERY_STRING"};          }          @paare = split("&", $daten);          foreach $paar (@paare)                   {                   $paar =~ tr/+/ /;                   $paar =~ s/%(..)/pack("C", hex($1))/eg;                   ($name, $wert) = split("=", $paar);                   $FORM{$name} = $wert;                   } ################################################################### # ------------------ Formular-Elemente ------------------ $recipient = $FORM{'recipient'}; $recipient_bcc = $FORM{'recipient_bcc'}; $subject = $FORM{'subject'}; $CB01 = $FORM{'Kacheloefen'}; $CB02 = $FORM{'Kaminoefen'}; $CB03 = $FORM{'Herde'}; $CB04 = $FORM{'Heizkamine'}; $input05 = $FORM{'Vorname'}; $input06 = $FORM{'Nachname'}; $input07 = $FORM{'Strasse'}; $input08 = $FORM{'PLZ'}; $input09 = $FORM{'Ort'}; $input10 = $FORM{'Land'}; $input11 = $FORM{'Telefon'}; $input12 = $FORM{'Telefax'}; $input13 = $FORM{'eMail'}; $input14 = $FORM{'Betreff'}; $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; ### Zeile 74 ### &falsch(Fehler 01: Bitte eine gueltige Postleitzahl(PLZ) eingeben !) unless ($input08 =~ m/\d{5}); ### Zeile 75 ### &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?\-/); &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 {          ($fehler) = @_;           } ################################################################## &getdate; if($os eq "UNIX")     {     &SendIt;     } else {            require "winmail.pl";            &SendMail($mailprog, $tempdirectory, $subject, $email_list[$recipient], $Text);            } &PrintResponse; ################################################################### # ---------- Empfänger-Mail aus den Formulardaten (im TXT-Format) ---------- sub SendIt { open (MAIL, "|$mailprog -t") || die "Kann Sendmail nicht starten: $!"; print MAIL "To: $email_list[$recipient, $recipient_cc]\n"; print MAIL "From: $input05, $input06\n\n"; print MAIL "------ KUNDENANFRAGE via WebFormular ------\n"; print MAIL "===========================================\n"; print MAIL "Subject: $subject - "; if ($FORM{'input14'} ne "") {print MAIL "$FORM{'input14'}\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{'CB01'} ne "") {print MAIL "$FORM{'CB01'}\n"; if ($FORM{'CB02'} ne "") {print MAIL "$FORM{'CB02'}\n"; if ($FORM{'CB03'} ne "") {print MAIL "$FORM{'CB03'}\n"; if ($FORM{'CB04'} ne "") {print MAIL "$FORM{'CB04'}\n\n"; print MAIL "===========================================\n"; print MAIL "Kundendaten:\n\n"; print MAIL "$input05, $input06\n"; if ($FORM{'input07'} ne "" and ne "Musterweg 10") {print MAIL "$FORM{'input07'}\n\n"; if ($FORM{'input08'} ne "" and ne "12345") {print MAIL "$FORM{'input08'}"; if ($FORM{'input09'} ne "" and ne "Musterhausen") {print MAIL "$FORM{'input09'}\n"; if ($FORM{'input10'} ne "" and ne "Musterland") {print MAIL "$FORM{'input10'}\n\n"; if ($FORM{'input11'} ne "" and ne "08382-72176") {print MAIL "Tel.:  $FORM{'input11'}\n"; if ($FORM{'input12'} ne "" and ne "08382-75140") {print MAIL "Fax.:  $FORM{'input12'}\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: Captain Future >>>"; close (MAIL);           } ################################################################### # ------------ 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 $ipaddr = $ENV{'REMOTE_ADDR'}; # Die IP muss codiert werden: $iptocheck = inet_aton($ipaddr); # Host-Lookup auf die codierte IP machen: $hostname = gethostbyaddr($iptocheck, AF_INET); ################################################################### # ------------ Datums und Zeitstempel ------------ sub getdate { @days = ("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"); @months = ("Januar", "Februar", "Maerz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"); ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time); $time = sprinf("%02d:%02d:%02d", $hour, $min, $sec); $year += 1900; $date = "$days[$wday], $mday. $months[$mon] $year";            } ################################################################## # ------------ Counter-Funktion ------------ $countfile = "formcount.txt"; $count = 'cat $countfile'; chop($count); $count = $count + 1; open (INF, ">$countfile"); print INF "$count\n"; close (INF); ################################################################## # ------------ Ergebnis-Seite bei Erfolg ------------ sub PrintResponse { print "Content-type: text/html\n\n"; print <<"ENDE"  



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
ENDE                  } ################################################################# # ------------ Ergebnis-Seite bei Fehlern ------------ sub missing { local ($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 ||    ©
FIN            } #################################################################