(CGI)Benötige Hilfe bei CGI-Skript!!
Jer
Habe folgendes Problem: Ich benötige ein CGI Skript, das mir die Daten eines Formulars
a) an eine emailadresse sendet und
b) die Daten in einer VCARD-Datei(Outlook) speichert.
Nun habe ich ein Skript geschrieben, nur leider funzt es nicht und ich hab keinerlei Ahnung weshalb nicht!!
Das Skript:
#Formulardaten einlesen
if($ENV{'REQUEST_METHOD'} eq 'GET')
{
$Daten = $ENV{'QUERY_STRING'}
}
else
{
read (STDIN, $daten, $ENV{'CONTENT_LENGTH'});
}
@formularfelder = split (/&/, $daten);
foreach $feld (@formularfelder)
{
($name, $value) = split(/=/, $Feld);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.\n)*-->//g;
$Formular[$i] = $name;
$i = $i + 1;
$Formular[$i] = $value;
$i = $i + 1;
}
$firma = $Formular[1];
$titel = $Formular[3];
$nname = $Formular[5];
$vname = $Formular[7];
$str = $Formular[9];
$post = $Formular[11];
$ort = $Formular[13];
$land = $Formular[15];
$email = $Formular[17];
$telnr = $Formular[19];
$faxnr = $Formular[21];
$name = $Formular[5].$Formular[7]
open (VCARD, ">$name.vcf");
print VCARD "BEGIN:VCARD \n";
print VCARD "VERSION:2.1 \n";
print VCARD "N:$vname;$nname;;$titel \n";
print VCARD "FN:$nname $vname \n";
print VCARD "ORG:$firma \n";
print VCARD "TEL;WORK;VOICE:$telnr \n";
print VCARD "TEL;WORK;FAX:$faxnr \n";
print VCARD "ADR;WORK;ENCODING=QUOTED-PRINTABLE:;;$str;$ort;;$post;$land \n";
print VCARD "LABEL;WORK;ENCODING=QUOTED-PRINTABLE:$str=0D=A$ort $post=0D=0A$land \n";
print VCARD "EMAIL;PREF;INTERNET:$email \n";
print VCARD "END:VCARD";
close (VCARD);
#E-Mail versenden
$Mailprogramm = "/usr/lib/sendmail"; # Pfad zu E-Mailprogramm
$MailSubject = "Formluar-Feedback"; # E-Mail Betreff
$Empfaenger = "jericho_one@gmx.de"; # E-Mail Adresse
$SenderName = $Formular[5]; # Absender
$SenderMail = $Formular[17]; # E-Mail Adresse des Absenders
open(MAIL,"$Mailprogramm -t") print STDERR "E-Mailprogramm konnte aufgrund eines Fehlers nicht gestartet werden";
print MAIL "To: $Empfaenger\n";
print MAIL "From: $SenderMail $SenderName\n";
print MAIL "Subject: $MailSubject\n\n";
$i = 0;
$max = $#Formular;
for($i=0;$i<=$max;$i=$i+2)
{
print MAIL "$Formular[$i]: $Formular[$i+1]\n";
}
close(MAIL);
print "Content-type: text/html\n\n";
print "Done.\n";
Danke schon mal im voraus!
Nun habe ich ein Skript geschrieben, nur leider funzt es nicht und ich hab keinerlei Ahnung weshalb nicht!!
Was heisst "es funzt nicht"? Wie aeussert sich der Fehler? Steht etwas im Error-Log?
Tips:
use CGI 'standard';
use CGI::Carp 'fatalsToBrowser';
Fange Fehler ab, wenn Du eine Datei oeffnest:
open FILE, $file or die "Can't open $file: $!";
Peter