Fabulicious
Cadet 3rd Year
- Registriert
- Feb. 2005
- Beiträge
- 36
Hi, ich hab folgendes Problem, ich hab vor kurzem als Webmaster ein Server-System übernommen und sollte einen Bestellmodus modifizieren. Der Bestellmodus lief folgender maßen:
- Der Kunde hat die möglichkeit über den Onlineshop zu bestellen
- oder sich ein PDF mit einem Fax-Bestellformular herunterzuladen
In diesem Falle sprechen wir über das Fax Formular, das als PDF ja normalerweise statisch aufgebaut ist.
In diesem Formular sind so einige Felder die aber auch direkt am PC ausgefüllt werden können, (1) um sie dann auszudrucken oder (2) direkt aus dem PDF (über einen kleinen Button) auch noch alternativ als Mail zu versenden. Doch genau hier entsteht mein Problem.
Ich habe ein Script bei dem ich mir 100% sicher bin das es vom Prinzip her gehen muss, aber wie es halt so is
geht es trotzdem nicht.
Da ich leider vorallem im PERL recht unbehalfen bin hoffe ich das ihr mir helfen könnt.
BTW: Ich vermute nen Formfehler oder so...
SCRIPT: (orderpdf.pl)
#!/usr/bin/perl
# *** Module einbinden ***
# *** Verzeichnise Server ***
$mail_prog = '/usr/lib/sendmail' ;
# *** Variablen ***
$LOCK_EX = 2;
$LOCK_UN = 8;
# *** Formularinhalte vordefinieren ***
my $empf = "webmaster\@edumedia.de";
my $subj = "Test PDF-Formular senden";
my $sender = "webmaster\@edumedia.de";
my $titel = "Formulardaten aus dem PDF:";
&parse_form();
if( defined($FORM{'subject'}) ) {
$subj = $FORM{'subject'};
delete($FORM{'subject'});
}
if( defined($FORM{'sendto'}) ) {
$empf = $FORM{'sendto'};
delete($FORM{'sendto'});
}
if( defined($FORM{'titel'}) ) {
$titel = $FORM{'titel'};
delete($FORM{'titel'});
}
@keylist = ();
$EMAIL_tables = "";
foreach $key (keys %FORM) { push(@keylist,$key); }
@sortkeylist = sort(@keylist);
foreach $key (@sortkeylist) {
$value = $FORM{$key};
$clkey = $key;
$clkey =~ tr/+/ /;
$clkey =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$clkey =~ s/<!--(.|\n)*-->//g;
$clkey =~ s/<([^>]|\n)*>//g;
$EMAIL_tables .= "$clkey: $value\n\n";
}
&email_order($empf, $subj, $sender, $titel);
print "Content-type: text/html\n\n";
print "Formular wurde gesendet!";
sub email_order {
my $recip = shift;
my $subject = shift;
my $sendemail = shift;
my $titel = shift;
open (MAIL, "|$mail_prog -t");
print MAIL "To: $recip\n";
print MAIL "Reply-to: $sendemail\n";
print MAIL "From: $sendemail\n";
print MAIL "Subject: $subject\n\n";
print MAIL "$titel\n";
print MAIL "==========================\n\n";
print MAIL "$EMAIL_tables";
print MAIL "==========================\n";
print MAIL "\n\n";
close (MAIL);
}
# *** Formulardaten auswerten ***
sub parse_form {
local ($buffer);
# Get the input
if ($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}
else {
$buffer=$ENV{'QUERY_STRING'};
}
# Split the name-value pairs
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
# Un-Webify plus signs and %-encoding
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;
$value =~ s/<([^>]|\n)*>//g;
$FORM{$name} = $value;
}
}
#!Scriptende
Vielen Dank schonmal im Vorraus
Fab
- Der Kunde hat die möglichkeit über den Onlineshop zu bestellen
- oder sich ein PDF mit einem Fax-Bestellformular herunterzuladen
In diesem Falle sprechen wir über das Fax Formular, das als PDF ja normalerweise statisch aufgebaut ist.
In diesem Formular sind so einige Felder die aber auch direkt am PC ausgefüllt werden können, (1) um sie dann auszudrucken oder (2) direkt aus dem PDF (über einen kleinen Button) auch noch alternativ als Mail zu versenden. Doch genau hier entsteht mein Problem.
Ich habe ein Script bei dem ich mir 100% sicher bin das es vom Prinzip her gehen muss, aber wie es halt so is
Da ich leider vorallem im PERL recht unbehalfen bin hoffe ich das ihr mir helfen könnt.
BTW: Ich vermute nen Formfehler oder so...
SCRIPT: (orderpdf.pl)
#!/usr/bin/perl
# *** Module einbinden ***
# *** Verzeichnise Server ***
$mail_prog = '/usr/lib/sendmail' ;
# *** Variablen ***
$LOCK_EX = 2;
$LOCK_UN = 8;
# *** Formularinhalte vordefinieren ***
my $empf = "webmaster\@edumedia.de";
my $subj = "Test PDF-Formular senden";
my $sender = "webmaster\@edumedia.de";
my $titel = "Formulardaten aus dem PDF:";
&parse_form();
if( defined($FORM{'subject'}) ) {
$subj = $FORM{'subject'};
delete($FORM{'subject'});
}
if( defined($FORM{'sendto'}) ) {
$empf = $FORM{'sendto'};
delete($FORM{'sendto'});
}
if( defined($FORM{'titel'}) ) {
$titel = $FORM{'titel'};
delete($FORM{'titel'});
}
@keylist = ();
$EMAIL_tables = "";
foreach $key (keys %FORM) { push(@keylist,$key); }
@sortkeylist = sort(@keylist);
foreach $key (@sortkeylist) {
$value = $FORM{$key};
$clkey = $key;
$clkey =~ tr/+/ /;
$clkey =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$clkey =~ s/<!--(.|\n)*-->//g;
$clkey =~ s/<([^>]|\n)*>//g;
$EMAIL_tables .= "$clkey: $value\n\n";
}
&email_order($empf, $subj, $sender, $titel);
print "Content-type: text/html\n\n";
print "Formular wurde gesendet!";
sub email_order {
my $recip = shift;
my $subject = shift;
my $sendemail = shift;
my $titel = shift;
open (MAIL, "|$mail_prog -t");
print MAIL "To: $recip\n";
print MAIL "Reply-to: $sendemail\n";
print MAIL "From: $sendemail\n";
print MAIL "Subject: $subject\n\n";
print MAIL "$titel\n";
print MAIL "==========================\n\n";
print MAIL "$EMAIL_tables";
print MAIL "==========================\n";
print MAIL "\n\n";
close (MAIL);
}
# *** Formulardaten auswerten ***
sub parse_form {
local ($buffer);
# Get the input
if ($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}
else {
$buffer=$ENV{'QUERY_STRING'};
}
# Split the name-value pairs
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
# Un-Webify plus signs and %-encoding
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;
$value =~ s/<([^>]|\n)*>//g;
$FORM{$name} = $value;
}
}
#!Scriptende
Vielen Dank schonmal im Vorraus
Fab