kontaktform.pl

Bash, Shell, PHP, Python, Perl, CGI
freezerlein
Posts: 4
Joined: 2004-05-04 08:53

kontaktform.pl

Post by freezerlein » 2005-10-20 17:11

Ich habe mir ein Perl Script aus dem Internet gezogen und meinen Bedürfnissen angepasst. Nur funktioniert 4es leider nicht und
ich kann mir leider nicht erklären warum. Wobei ich dazusagen
muss das ich von Perl keinen Plan habe :(

Waäre nett wenn mir jemand helfen könnte


Vielen dank schonmal im vorraus

P.S. Hier im übrigen der Logauszug:
[2005-10-20 16:59:17]: uid: (636/web1) gid: (101/101) cmd: kontaktform.pl

Code: Select all

#!/usr/bin/perl

use CGI::Carp qw(fatalsToBrowser);

###################################################
# Konfiguration
# -------------------------------------------------
# Der Pfad zu Ihrem Mailprogramm
$mailprog = '/usr/sbin/sendmail';

# An welche URL soll der User geleitet werden, wenn er seine Mail
# geschrieben hat?$webmastername
$returnurl = "http://xxx.de/xxx";

# Zeitspanne in Sek nach der weitergeleitet wird zu obiger URL
$weiterleitungszeit = 5;

# URL zum CSS Stylesheet fuer die Templateformatierung 
$cssurl = "http://xxx.de/xxx/formularcss.css";

# E-Mail|Name der Empfänger, beim letzten Element kein Komma am Ende
@email_liste = (
'muh@muh.de|Heinz Mueller',
);

###################################################

# Felder 
$anrede = filesaver($FORM{'anrede'});
$name = filesaver($FORM{'name'});
$strassenummer = filesaver($FORM{'strassenummer'});
$plzort = filesaver($FORM{'plzort'});
$land = filesaver($FORM{'land'});
$mail = filesaver($FORM{'mail'});
$telefon = filesaver($FORM{'telefon'});
$faxnummer = filesaver($FORM{'faxnummer'});
$handynummer = filesaver($FORM{'handynummer'});
$gebtag = filesaver($FORM{'gebtag'});
$gebmonat = filesaver($FORM{'gebmonat'});
$gebjahr = filesaver($FORM{'gebjahr'});
$empfaenger = filesaver($FORM{'empfaenger'});
$paket = filesaver($FORM{'paket'});
$kontoinh = filesaver($FORM{'kontoinh'});
$blz = filesaver($FORM{'blz'});
$kontonummer = filesaver($FORM{'kontonummer'});
$zahlweise = filesaver($FORM{'zahlweise'});
###################################################

($webmastermail,$webmastername) = split(/|/, $email_liste[$empfaenger]);

&datumsausgabe;
&mailsenden;
&bestaetigung;

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Datumsausgabe
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
sub mailsenden {

# Mailtext Betreiber
my $mailbodytext = <<MBT;
Hallo $webmastername,

unterhalb die abgesendeten Daten des Kontaktformulares:
=====================================================
Anrede: $anrede
Name: $name
Strasse: $strassenummer
PLZ, Ort: $plzort
Land: $land
Email: $mail
Faxnummer: $faxnummer
Handynummer: $handynummer
Geburtstag: $gebtag $gebmonat $gebjahr
Empfänger: $empfaenger
Paket: $paket
Kontoinhaber: $kontoinh
BLZ: $blz
Kontonummer: $kontonummer
Zahlweise: $zahlweise
=====================================================
Gesendet am: $datum
MBT


open (MAIL, "|$mailprog -t") || die $!;
print MAIL "Return-Path:<$webmastermail>n";
print MAIL "To: $webmastermail ($webmastername)n";
print MAIL "From: $mail ($name)n";
print MAIL "Subject: $paketnn";
print MAIL "$mailbodytextn";
close(MAIL);


open (MAIL, "|$mailprog -t") || die $!;
print MAIL "Return-Path:<$webmastermail>n";
print MAIL "To: $email ($name)n";
print MAIL "From: $webmastermail ($webmastername)n";
print MAIL "Subject: Ihre Bestellungnn";
print MAIL "Hallo $name,nn";
print MAIL "Wir haben Ihre Bestellung erhalten und werden n";
print MAIL "diese sobald als möglich bearbeiten.n";
print MAIL "xxxn";
print MAIL "bekommen sie eine Bestätigungsmail mit den Zugangsdaten.nn";
print MAIL "==================================nn";
print MAIL "xxxnn";
print MAIL "==================================nn";
print MAIL "Gesendet am: $datumn";
close(MAIL);


} # Ende sub Mail

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Bestaetigung ausgeben
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
sub bestaetigung {
print "Content-type: text/htmlnn";

$meta = "<meta http-equiv="refresh" content="$weiterleitungszeit; URL=$returnurl">";
$sektionstitel = "Bestellung erfolgreich versendet.";

$sektionsausgabe = qq~Vielen Dank $anrede $name, für Ihre Bestellung.<br><br>
Sie werden in $weiterleitungszeit Sekunden weitergeleitet, falls dies nicht funktioniert, klicken Sie bitte untenstehen Link an.
<br><div align="center"><a href="$returnurl">Zurück zur Hauptseite</a></div>
~;

print &tparser("setup/formhead.html");
print &tparser("setup/bestaetigung.html");
exit;
}

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Datumsausgabe
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
sub datumsausgabe {

# Datumsroutine
@tage = ('Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag');
@monate = ('Januar','Februar','Maerz','April','Mai','Juni','Juli','August',
'September','Oktober','November','Dezember');
($sec, $min, $stunde, $mtag, $mon, $jahr, $tag, $nr_tag, $isdst) = localtime(time);
if($stunde < 10) { $stunde = "0$stunde"; }
if ($min < 10) { $min = "0$min"; }
if ($sec < 10) { $sec = "0$sec"; }
$jahr = 1900 + $jahr;
$datum = "$tage[$tag], $mtag. $monate[$mon] $jahr um $stunde:$min Uhr";
}

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Subroutine Templateausgabe
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Aufrufbeispiel:
# print &tparser("$cgipfad/templates/footer.html");

sub tparser {
my $templatedatei = shift;
my $OUTPUT;
local($/);

open (FILE, "<$templatedatei") || scripterror("Fehler: Kann $templatedatei nicht oeffnen!",$!);
$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;
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Filesaver
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Anwendung bei zu speichernden Daten
# $formularwert = filesaver($formularwert);

sub filesaver {
$_[0] =~ s/</</g;
$_[0] =~ s/>/>/g;
$_[0] =~ s/^s+//;
$_[0] =~ s/s+$//;
$_[0] =~ s/`//g;
$_[0] =~ s/r//g;
$_[0] =~ s/|//g;
$_[0] =~ s/|//g;
$_[0] =~ s/|//g;
$_[0] =~ s/|//g;
$_[0] =~ s/|//g;
$_[0] =~ s/|//g;
$_[0] =~ s/|//g;
$_[0] =~ s/|//g;
$_[0] =~ s/|//g;
$_[0] =~ s/|//g;
return($_[0]);
}

hornox
Posts: 139
Joined: 2005-09-22 23:09

Re: kontaktform.pl

Post by hornox » 2005-10-20 18:09

[2005-10-20 16:59:17]: uid: (636/web1) gid: (101/101) cmd: kontaktform.pl
Weil du nicht verraten hast was für einen Webserver du benutzt rate ich einfach mal:
http://httpd.apache.org/docs/2.0/suexec.html

Code: Select all

chown web1 kontaktform.pl

freezerlein
Posts: 4
Joined: 2004-05-04 08:53

Re: kontaktform.pl

Post by freezerlein » 2005-10-20 18:36

HornOx wrote:
[2005-10-20 16:59:17]: uid: (636/web1) gid: (101/101) cmd: kontaktform.pl
Weil du nicht verraten hast was für einen Webserver du benutzt rate ich einfach mal:
http://httpd.apache.org/docs/2.0/suexec.html

Code: Select all

chown web1 kontaktform.pl
Webserver ist Apache.
Owner ist web1 und Rechte stehen auf 755

Ich vermute eher einen Syntaxfehler, da ich das selbe Script
schon im Einsatz habe und es funktioniert. Nur dieses hier
habe ich auf meine Bedürfnisse angepasst und geht nicht ..

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: kontaktform.pl

Post by Roger Wilco » 2005-10-20 18:47

Es wäre durchaus auch hilfreich, wenn du uns verraten würdest, was nicht funktioniert...

hornox
Posts: 139
Joined: 2005-09-22 23:09

Re: kontaktform.pl

Post by hornox » 2005-10-20 19:25

Ich vermute eher einen Syntaxfehler, da ich das selbe Script
schon im Einsatz habe und es funktioniert. Nur dieses hier
habe ich auf meine Bedürfnisse angepasst und geht nicht ..
Was hast du genau verändert?
# E-Mail|Name der Empfänger, beim letzten Element kein Komma am Ende
@email_liste = (
'muh@muh.de|Heinz Mueller',
);
sieht irgendwie verdächtig aus...

freezerlein
Posts: 4
Joined: 2004-05-04 08:53

Re: kontaktform.pl

Post by freezerlein » 2005-10-20 19:33

- Das , am Ende der Zeile habe ich entfernt.
- Weiterhin die Fehlermeldung
+ Fehlermeldung: malformed header from script. Bad header=No recipient addresses found i: kontaktform.pl
- Die weitere Mail an den Webseitenbetreiber kommt nicht an
- Die Email geht an die Person die das Formular ausfüllt raus
+ In der Email steht nichts ausser..
Hallo Maxi Mustermann,

unterhalb die abgesendeten Daten des Bestellformulares: =====================================================
Anrede:
Name:
Strasse:
PLZ, Ort:
Land:
Email:
Faxnummer:
Handynummer:
Geburtstag:
Empfänger:
Paket:
Kontoinhaber:
BLZ:
Kontonummer:
Zahlweise:
=====================================================
Gesendet am: Donnerstag, 20. Oktober 2005 um 19:29 Uhr

freezerlein
Posts: 4
Joined: 2004-05-04 08:53

Re: kontaktform.pl

Post by freezerlein » 2005-10-22 15:01

Keine eine Idee was an dem Code verkehrt sein könnte ?

Was ist denn z.B. damit ?

Code: Select all

sub filesaver {
$_[0] =~ s/</</g;
$_[0] =~ s/>/>/g;
$_[0] =~ s/^s+//;
$_[0] =~ s/s+$//;
$_[0] =~ s/`//g;
$_[0] =~ s/r//g;
$_[0] =~ s/|//g;
$_[0] =~ s/|//g;
$_[0] =~ s/|//g;
$_[0] =~ s/|//g;
$_[0] =~ s/|//g;
$_[0] =~ s/|//g;
$_[0] =~ s/|//g;
$_[0] =~ s/|//g;
$_[0] =~ s/|//g;
$_[0] =~ s/|//g;
return($_[0]);
}