Hi Bernd,
Mit dem „use CGI;“ und dem
„new CGI;“ nach dem „$daten“ komme ich nicht ganz klar.
Sieht man …
Durch die Verwendung des CGI-Moduls könnte man einiges einfacher und übersichtlicher haben.
Man könnte überhaupt eine Menge an diesem Skript verbessern.
Kommt das vielleicht aus Matt’s Script-Archiv?
Egal, das folgende müsste funktionieren.
#!/usr/bin/perl
Pfad des Mail-Programms auf dem Server
$mailprog = ‚/usr/sbin/sendmail‘;
Wie viele Bytes sollen empfangen werden?
read(STDIN, $buffer, $ENV{‚CONTENT_LENGTH‘});
Liste mit Schlüsselwort-/Wertepaaren erstellen
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(„C“, hex($1))/eg;
$name =~ s///g;
$name =~ s/]|\n)*>//g;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(„C“, hex($1))/eg;
$value =~ s///g;
$value =~ s/]|\n)*>//g;
$FORM{$name} = $value;
}
Lesen der unsichtbar übertragenen Variablen -
genaugenommen kopieren, eingelesen sind sie ja bereits.
$subject = $FORM{subject};
$to = $FORM{to};
$from = $FORM{from};
$followupurl = $FORM{followupurl};
Mergen des Vor- und Nachnamen in Contact
Jetzt mal ohne CGI-Modul.
Voraussetzung sind natürlich FORMularfelder
mit den entsprechenden Namen
$vorname =$FORM{‚vname‘};
$nachname =$FORM{‚nname‘};
$contact=$vorname." ".$nachname;
Öffnen des Mail-Programms OHNE FEHLERBEHANDLUNG?!
Das lassen wir für’s erste mal so stehen
open(MAIL,"|$mailprog -t");
print MAIL „Content-Type: application/x-gm-impdata\n“;
print MAIL „To: $to\n“;
print MAIL „From: $from\n“;
print MAIL „Subject: $subject\n“;
print MAIL „\n“;
print MAIL „[Instructions]\n“;
print MAIL „savethis=Web Import File\n“;
print MAIL „DupCheck1=contact\n“;
print MAIL „DupCheck2=company\n“;
print MAIL „DupCheck3=phone1\n“;
print MAIL „OnNewSendEmail=WEBIMP,Neuer Web-Kontakt ist eingegangen!\n“;
print MAIL „OnDupSendEmail=WEBIMP,DOPPELTER DATENSATZ angelegt!\n“;
print MAIL „OnNewAttachTrack=WEB-HINWEIS\n“;
print MAIL „ProperCase=Company, etc.\n“;
print MAIL „UpperCase=State\n“;
print MAIL „\n“;
print MAIL „[Data]\n“;
foreach $key (keys(%FORM)) {
if ($key ne „subject“ && $key ne „to“ && $key ne „from“ && $key ne „followupurl“ && $key !~ /\bcs._/) {
print MAIL „$key=$FORM{$key}\n“;
}
}
print MAIL „\n“;
print MAIL „[ContSupp]\n“;
foreach $key (keys(%FORM)) {
if ($key ne „subject“ && $key ne „to“ && $key ne „from“ && $key ne „followupurl“ && $key =~ /\bcs._/) {
$rrrt="$key=$FORM{$key}\n";
push(@csliste, $rrrt);
}
}
@Ordnung=sort(@csliste);
for(@Ordnung)
{
print MAIL $_;
}
print MAIL „$key=$FORM{$key}\n“;
print MAIL „\n“;
close(MAIL);
Forward to the Follow-up URL
according to RFC 2068 (HTTP 1.1) !!!
Aber auch das könnte man ganz komfortabel per CGI-Modul…
print „Status: 302\n“;
print „Location: $followupurl\n\n“;
exit(0);
Soweit das.
Falls dich englischsprachige Texte nicht abschrecken:
Auf http://www.perl.com gibt es einige gute Tutorials,
und auch die mitgelieferte Dokumentation zu Perl
(an der Eingabeaufforderung perldoc eingeben, wenn bei Dir
Perl installiert ist.
Wenn nicht, erstmal installieren, gibt’s z.B. bei
http://www.activestate.com
)
Die Perl-Doku gibt es auch online auf
http://cpan.org (auf perl.com bestimmt auch)
Gruss, Ingo