Huspes
Hallo Gemeinde,
ich versuche mein Glück mit CGI-Scrips und habe folgendes Problem wo ich Eure Hilfe brauche
Schaut Euch mal bitte mein Formular damit Ihr wisst worum es sich dreht
Mein Bestellformular
Bitte nicht auf Abschicken drücken, da einiges geändert wurden ist :-)
Ihr sieht oben, das man einige Sachen aussuchen kann....
Wenn man auf Abschicken drückt wird mein mailform.cgi aufgerufen welches ich unten angeheftet habe, da ich leider kein Anhang auswählen konnte
Nachdem alles geprüft wurden ist, bekomme ich natürlich eine Email, wo alle Formularfelder eingetragen sind.
Jetzt möchte ich aber nur, das Daten übermittelt werden, die auch einen Inhalt haben, aber nur wie ???
Hoffe das ich nicht zu kompliziert gefragt habe
----------------------------------
#!/usr/bin/perl
use CGI::Carp qw(fatalsToBrowser);
require "mailsetup.pl";
&formparser;
foreach ("/usr/sbin/sendmail","/usr/lib/sendmail","/usr/bin/sendmail","/usr/share/s
endmail","/var/qmail/bin/sendmail","/usr/bin/sendmail.restart","/etc/sendma
il.cf","/etc/sendmail.cw","/usr/man/man8/sendmail.8","/var/qmail/bin/qmail-
inject"){
if(-e $_ && -X _){
$mailprogamm = $_;
last;
}
}
###################################################
# alle Formfelder
$format = &maildatensaver($FORM{'format'});
$papier1 = &maildatensaver($FORM{'papier1'});
$gewicht1 = &maildatensaver($FORM{'gewicht1'});
$paperfarbe1 = &maildatensaver($FORM{'paperfarbe1'});
$abheftlochung1 = &maildatensaver($FORM{'abheftlochung1'});
$druckvorderseite1 = &maildatensaver($FORM{'druckvorderseite1'});
$druckrueckseite1 = &maildatensaver($FORM{'druckrueckseite1'});
$orgastreifen1 = &maildatensaver($FORM{'orgastreifen1'});
$papier2 = &maildatensaver($FORM{'papier2'});
$gewicht2 = &maildatensaver($FORM{'gewicht2'});
$papierfarbe2 = &maildatensaver($FORM{'papierfarbe2'});
$druckvorderseite2 = &maildatensaver($FORM{'druckvorderseite2'});
$druckrueckseite2 = &maildatensaver($FORM{'druckrueckseite2'});
$orgastreifen2 = &maildatensaver($FORM{'orgastreifen2'});
$papier3 = &maildatensaver($FORM{'papier3'});
$gewicht3 = &maildatensaver($FORM{'gewicht3'});
$papierfarbe3 = &maildatensaver($FORM{'papierfarbe3'});
$druckvorderseite3 = &maildatensaver($FORM{'druckvorderseite3'});
$druckrueckseite3 = &maildatensaver($FORM{'druckrueckseite3'});
$orgastreifen3 = &maildatensaver($FORM{'orgastreifen3'});
$papier4 = &maildatensaver($FORM{'papier4'});
$gewicht4 = &maildatensaver($FORM{'gewicht4'});
$papierfarbe4 = &maildatensaver($FORM{'papierfarbe4'});
$druckvorderseite4 = &maildatensaver($FORM{'druckvorderseite4'});
$druckrueckseite4 = &maildatensaver($FORM{'druckrueckseite4'});
$orgastreifen4 = &maildatensaver($FORM{'orgastreifen4'});
$papier5 = &maildatensaver($FORM{'papier5'});
$gewicht5 = &maildatensaver($FORM{'gewicht5'});
$papierfarbe5 = &maildatensaver($FORM{'papierfarbe5'});
$druckvorderseite5 = &maildatensaver($FORM{'druckvorderseite5'});
$druckrueckseite5 = &maildatensaver($FORM{'druckrueckseite5'});
$orgastreifen5 = &maildatensaver($FORM{'orgastreifen5'});
$papier6 = &maildatensaver($FORM{'papier6'});
$gewicht6 = &maildatensaver($FORM{'gewicht6'});
$papierfarbe6 = &maildatensaver($FORM{'papierfarbe6'});
$druckvorderseite6 = &maildatensaver($FORM{'druckvorderseite6'});
$druckrueckseite6 = &maildatensaver($FORM{'druckrueckseite6'});
$orgastreifen6 = &maildatensaver($FORM{'orgastreifen6'});
$abheftlochung2 = &maildatensaver($FORM{'abheftlochung2'});
$abheftlochung3 = &maildatensaver($FORM{'abheftlochung3'});
$abheftlochung4 = &maildatensaver($FORM{'abheftlochung4'});
$abheftlochung5 = &maildatensaver($FORM{'abheftlochung5'});
$abheftlochung6 = &maildatensaver($FORM{'abheftlochung6'});
$crimpung = &maildatensaver($FORM{'crimpung'});
$multiflex = &maildatensaver($FORM{'multiflex'});
$leimung = &maildatensaver($FORM{'leimung'});
$laengsperfoslinks = &maildatensaver($FORM{'laengsperfoslinks'});
$laengsperfosrechts = &maildatensaver($FORM{'laengsperfosrechts'});
$druckvorstufe = &maildatensaver($FORM{'druckvorstufe'});
$auflage1 = &maildatensaver($FORM{'auflage1'});
$auflage2 = &maildatensaver($FORM{'auflage2'});
$auflage3 = &maildatensaver($FORM{'auflage3'});
$auflage4 = &maildatensaver($FORM{'auflage4'});
$bemerkung = &maildatensaver($FORM{'bemerkung'});
$firma = &maildatensaver($FORM{'firma'});
$sachbearbeiter = &maildatensaver($FORM{'sachbearbeiter'});
$tel = &maildatensaver($FORM{'tel'});
$fax = &maildatensaver($FORM{'fax'});
$strasse = &maildatensaver($FORM{'strasse'});
$plz = &maildatensaver($FORM{'plz'});
$ort = &maildatensaver($FORM{'ort'});
$email = &maildatensaver($FORM{'email'});
###################################################
# Fehlerbehandlung Anfang
$fehlermeldung = "" ;
$fehler_gefunden = "" ;
#--------CHECK fuer: Email-----------------------------
$errormeldung = "<li>Das Feld \"Email\" muss eine gültige E-Mail Adresse beinhalten.\n";
if ($email !~ /^([a-zA-Z0-9][a-zA-Z_0-9-\.]*)(\@)([a-zA-Z0-9][a-zA-Z_0-9-\.]*[a-zA-Z0-9])
(\.)([a-zA-Z0-9]*)$/) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }
#-------------------------------------
if ($fehler_gefunden) {
&fehlerausgabe;
exit;
}
# Fehlerbehandlung Ende
###################################################
&floodcheck;
&datumsroutine;
&mailsenden;
&bestaetigung;
sub mailsenden {
# Mail senden
my $mailbodykontakt = <<MBT;
**** Bestellung von Endlosformulare ****
Uhrzeit der Bestellung:
$datumlang
Anschrift: $sachbearbeiter
$firma
$strasse
$plz $ort
Telefon: $tel
Fax: $fax
Email Adresse: $email
Produkt: Endlosformulare
Format: $format
**** Papierreihe 1 ****
Papier: $papier1
Gewicht: $gewicht1
Papierfarbe: $papierfarbe1
Lochung: $abheftlochung1
Druckvorderseite: $druckvorderseite1
Druckrückseite: $druckrueckseite1
Orgastreifen: $orgastreifen1
**** Papierreihe 2 ****
Papier: $papier2
Gewicht: $gewicht2
Papierfarbe: $papierfarbe2
Lochung: $abheftlochung2
Druckvorderseite: $druckvorderseite2
Druckrückseite: $druckrueckseite2
Orgastreifen: $orgastreifen2
**** Papierreihe 3 ****
Papier: $papier3
Gewicht: $gewicht3
Papierfarbe: $papierfarbe3
Lochung: $abheftlochung3
Druckvorderseite: $druckvorderseite3
Druckrückseite: $druckrueckseite3
Orgastreifen: $orgastreifen3
**** Papierreihe 4 ****
Papier: $papier4
Gewicht: $gewicht4
Papierfarbe: $papierfarbe4
Lochung: $abheftlochung4
Druckvorderseite: $druckvorderseite4
Druckrückseite: $druckrueckseite4
Orgastreifen: $orgastreifen4
**** Papierreihe 5 ****
Papier: $papier5
Gewicht: $gewicht5
Papierfarbe: $papierfarbe5
Lochung: $abheftlochung5
Druckvorderseite: $druckvorderseite5
Druckrückseite: $druckrueckseite5
Orgastreifen: $orgastreifen5
**** Papierreihe 6 ****
Papier: $papier6
Gewicht: $gewicht6
Papierfarbe: $papierfarbe6
Lochung: $abheftlochung6
Druckvorderseite: $druckvorderseite6
Druckrückseite: $druckrueckseite6
Orgastreifen: $orgastreifen6
**** Feld Crimpung ****
Crimpung: $crimpung
Multiflex: $multiflex
Leimung: $leimung
Längsperfos links: $laengsperfoslinks
Längsperfos rechts: $laengsperfosrechts
Druckvorstufe: $druckvorstufe
*** Feld Auflage ****
Auflage 1: $auflage1
Auflage 2: $auflage2
Auflage 3: $auflage3
Auflage 4: $auflage4
**** Bemerkungen ****
Bemerkung:
$bemerkung
*** Ende des Endlosformulars ****
MBT
if (!$email) {
$email = $empfaengermail;
}
if (!$betreff) {
$betreff = "Bestelleingang für Endlosformulare";
}
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 = "Bestellung erfolgreich versendet";
$statustext = qq~<b>Vielen Dank für Ihre Nachricht.</b><br><br>
Sie werden in $forwardtime Sekunden zur Hauptseite weitergeleitet.
Sollte dies nicht funktionieren klicken Sie bitte untenstehen Link.<br><br>
<div align="center"><a href="$forwardurl">Zurück zur Hauptseite</a></div>
<br><br>
~;
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~<b>Beim ausfüllen haben Sie folgendes vergessen:</b>
<ol>
$fehlermeldung
</ol><br><br>
<div align="center">Bitte gehen Sie « <a href="java script:history.go(-1)">zurück</a></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.','No
v.','Dez.');
@tage = ('Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag')
;
@monate = ('Januar','Februar','März','April','Mai','Juni','Juli','August','September'
,'Oktober','November','Dezember');
($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 = "<li>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]);
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
ich versuche mein Glück mit CGI-Scrips und habe folgendes Problem wo ich Eure Hilfe brauche
Schaut Euch mal bitte mein Formular damit Ihr wisst worum es sich dreht
Mein Bestellformular
Bitte nicht auf Abschicken drücken, da einiges geändert wurden ist :-)
Ihr sieht oben, das man einige Sachen aussuchen kann....
Wenn man auf Abschicken drückt wird mein mailform.cgi aufgerufen welches ich unten angeheftet habe, da ich leider kein Anhang auswählen konnte
Nachdem alles geprüft wurden ist, bekomme ich natürlich eine Email, wo alle Formularfelder eingetragen sind.
Jetzt möchte ich aber nur, das Daten übermittelt werden, die auch einen Inhalt haben, aber nur wie ???
Hoffe das ich nicht zu kompliziert gefragt habe
----------------------------------
#!/usr/bin/perl
use CGI::Carp qw(fatalsToBrowser);
require "mailsetup.pl";
&formparser;
foreach ("/usr/sbin/sendmail","/usr/lib/sendmail","/usr/bin/sendmail","/usr/share/s
endmail","/var/qmail/bin/sendmail","/usr/bin/sendmail.restart","/etc/sendma
il.cf","/etc/sendmail.cw","/usr/man/man8/sendmail.8","/var/qmail/bin/qmail-
inject"){
if(-e $_ && -X _){
$mailprogamm = $_;
last;
}
}
###################################################
# alle Formfelder
$format = &maildatensaver($FORM{'format'});
$papier1 = &maildatensaver($FORM{'papier1'});
$gewicht1 = &maildatensaver($FORM{'gewicht1'});
$paperfarbe1 = &maildatensaver($FORM{'paperfarbe1'});
$abheftlochung1 = &maildatensaver($FORM{'abheftlochung1'});
$druckvorderseite1 = &maildatensaver($FORM{'druckvorderseite1'});
$druckrueckseite1 = &maildatensaver($FORM{'druckrueckseite1'});
$orgastreifen1 = &maildatensaver($FORM{'orgastreifen1'});
$papier2 = &maildatensaver($FORM{'papier2'});
$gewicht2 = &maildatensaver($FORM{'gewicht2'});
$papierfarbe2 = &maildatensaver($FORM{'papierfarbe2'});
$druckvorderseite2 = &maildatensaver($FORM{'druckvorderseite2'});
$druckrueckseite2 = &maildatensaver($FORM{'druckrueckseite2'});
$orgastreifen2 = &maildatensaver($FORM{'orgastreifen2'});
$papier3 = &maildatensaver($FORM{'papier3'});
$gewicht3 = &maildatensaver($FORM{'gewicht3'});
$papierfarbe3 = &maildatensaver($FORM{'papierfarbe3'});
$druckvorderseite3 = &maildatensaver($FORM{'druckvorderseite3'});
$druckrueckseite3 = &maildatensaver($FORM{'druckrueckseite3'});
$orgastreifen3 = &maildatensaver($FORM{'orgastreifen3'});
$papier4 = &maildatensaver($FORM{'papier4'});
$gewicht4 = &maildatensaver($FORM{'gewicht4'});
$papierfarbe4 = &maildatensaver($FORM{'papierfarbe4'});
$druckvorderseite4 = &maildatensaver($FORM{'druckvorderseite4'});
$druckrueckseite4 = &maildatensaver($FORM{'druckrueckseite4'});
$orgastreifen4 = &maildatensaver($FORM{'orgastreifen4'});
$papier5 = &maildatensaver($FORM{'papier5'});
$gewicht5 = &maildatensaver($FORM{'gewicht5'});
$papierfarbe5 = &maildatensaver($FORM{'papierfarbe5'});
$druckvorderseite5 = &maildatensaver($FORM{'druckvorderseite5'});
$druckrueckseite5 = &maildatensaver($FORM{'druckrueckseite5'});
$orgastreifen5 = &maildatensaver($FORM{'orgastreifen5'});
$papier6 = &maildatensaver($FORM{'papier6'});
$gewicht6 = &maildatensaver($FORM{'gewicht6'});
$papierfarbe6 = &maildatensaver($FORM{'papierfarbe6'});
$druckvorderseite6 = &maildatensaver($FORM{'druckvorderseite6'});
$druckrueckseite6 = &maildatensaver($FORM{'druckrueckseite6'});
$orgastreifen6 = &maildatensaver($FORM{'orgastreifen6'});
$abheftlochung2 = &maildatensaver($FORM{'abheftlochung2'});
$abheftlochung3 = &maildatensaver($FORM{'abheftlochung3'});
$abheftlochung4 = &maildatensaver($FORM{'abheftlochung4'});
$abheftlochung5 = &maildatensaver($FORM{'abheftlochung5'});
$abheftlochung6 = &maildatensaver($FORM{'abheftlochung6'});
$crimpung = &maildatensaver($FORM{'crimpung'});
$multiflex = &maildatensaver($FORM{'multiflex'});
$leimung = &maildatensaver($FORM{'leimung'});
$laengsperfoslinks = &maildatensaver($FORM{'laengsperfoslinks'});
$laengsperfosrechts = &maildatensaver($FORM{'laengsperfosrechts'});
$druckvorstufe = &maildatensaver($FORM{'druckvorstufe'});
$auflage1 = &maildatensaver($FORM{'auflage1'});
$auflage2 = &maildatensaver($FORM{'auflage2'});
$auflage3 = &maildatensaver($FORM{'auflage3'});
$auflage4 = &maildatensaver($FORM{'auflage4'});
$bemerkung = &maildatensaver($FORM{'bemerkung'});
$firma = &maildatensaver($FORM{'firma'});
$sachbearbeiter = &maildatensaver($FORM{'sachbearbeiter'});
$tel = &maildatensaver($FORM{'tel'});
$fax = &maildatensaver($FORM{'fax'});
$strasse = &maildatensaver($FORM{'strasse'});
$plz = &maildatensaver($FORM{'plz'});
$ort = &maildatensaver($FORM{'ort'});
$email = &maildatensaver($FORM{'email'});
###################################################
# Fehlerbehandlung Anfang
$fehlermeldung = "" ;
$fehler_gefunden = "" ;
#--------CHECK fuer: Email-----------------------------
$errormeldung = "<li>Das Feld \"Email\" muss eine gültige E-Mail Adresse beinhalten.\n";
if ($email !~ /^([a-zA-Z0-9][a-zA-Z_0-9-\.]*)(\@)([a-zA-Z0-9][a-zA-Z_0-9-\.]*[a-zA-Z0-9])
(\.)([a-zA-Z0-9]*)$/) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }
#-------------------------------------
if ($fehler_gefunden) {
&fehlerausgabe;
exit;
}
# Fehlerbehandlung Ende
###################################################
&floodcheck;
&datumsroutine;
&mailsenden;
&bestaetigung;
sub mailsenden {
# Mail senden
my $mailbodykontakt = <<MBT;
**** Bestellung von Endlosformulare ****
Uhrzeit der Bestellung:
$datumlang
Anschrift: $sachbearbeiter
$firma
$strasse
$plz $ort
Telefon: $tel
Fax: $fax
Email Adresse: $email
Produkt: Endlosformulare
Format: $format
**** Papierreihe 1 ****
Papier: $papier1
Gewicht: $gewicht1
Papierfarbe: $papierfarbe1
Lochung: $abheftlochung1
Druckvorderseite: $druckvorderseite1
Druckrückseite: $druckrueckseite1
Orgastreifen: $orgastreifen1
**** Papierreihe 2 ****
Papier: $papier2
Gewicht: $gewicht2
Papierfarbe: $papierfarbe2
Lochung: $abheftlochung2
Druckvorderseite: $druckvorderseite2
Druckrückseite: $druckrueckseite2
Orgastreifen: $orgastreifen2
**** Papierreihe 3 ****
Papier: $papier3
Gewicht: $gewicht3
Papierfarbe: $papierfarbe3
Lochung: $abheftlochung3
Druckvorderseite: $druckvorderseite3
Druckrückseite: $druckrueckseite3
Orgastreifen: $orgastreifen3
**** Papierreihe 4 ****
Papier: $papier4
Gewicht: $gewicht4
Papierfarbe: $papierfarbe4
Lochung: $abheftlochung4
Druckvorderseite: $druckvorderseite4
Druckrückseite: $druckrueckseite4
Orgastreifen: $orgastreifen4
**** Papierreihe 5 ****
Papier: $papier5
Gewicht: $gewicht5
Papierfarbe: $papierfarbe5
Lochung: $abheftlochung5
Druckvorderseite: $druckvorderseite5
Druckrückseite: $druckrueckseite5
Orgastreifen: $orgastreifen5
**** Papierreihe 6 ****
Papier: $papier6
Gewicht: $gewicht6
Papierfarbe: $papierfarbe6
Lochung: $abheftlochung6
Druckvorderseite: $druckvorderseite6
Druckrückseite: $druckrueckseite6
Orgastreifen: $orgastreifen6
**** Feld Crimpung ****
Crimpung: $crimpung
Multiflex: $multiflex
Leimung: $leimung
Längsperfos links: $laengsperfoslinks
Längsperfos rechts: $laengsperfosrechts
Druckvorstufe: $druckvorstufe
*** Feld Auflage ****
Auflage 1: $auflage1
Auflage 2: $auflage2
Auflage 3: $auflage3
Auflage 4: $auflage4
**** Bemerkungen ****
Bemerkung:
$bemerkung
*** Ende des Endlosformulars ****
MBT
if (!$email) {
$email = $empfaengermail;
}
if (!$betreff) {
$betreff = "Bestelleingang für Endlosformulare";
}
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 = "Bestellung erfolgreich versendet";
$statustext = qq~<b>Vielen Dank für Ihre Nachricht.</b><br><br>
Sie werden in $forwardtime Sekunden zur Hauptseite weitergeleitet.
Sollte dies nicht funktionieren klicken Sie bitte untenstehen Link.<br><br>
<div align="center"><a href="$forwardurl">Zurück zur Hauptseite</a></div>
<br><br>
~;
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~<b>Beim ausfüllen haben Sie folgendes vergessen:</b>
<ol>
$fehlermeldung
</ol><br><br>
<div align="center">Bitte gehen Sie « <a href="java script:history.go(-1)">zurück</a></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.','No
v.','Dez.');
@tage = ('Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag')
;
@monate = ('Januar','Februar','März','April','Mai','Juni','Juli','August','September'
,'Oktober','November','Dezember');
($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 = "<li>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]);
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
