mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 26.04.2024 15:12 Benutzername: Passwort: Auto-Login

Thema: Formmail.pl - Weisse Seite nach Abschicken vom 08.06.2006


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> Formmail.pl - Weisse Seite nach Abschicken
Autor Nachricht
pet
Threadersteller

Dabei seit: 08.06.2006
Ort: -
Alter: -
Geschlecht: -
Verfasst Do 08.06.2006 00:10
Titel

Formmail.pl - Weisse Seite nach Abschicken

Antworten mit Zitat Zum Seitenanfang

Hallo,

ich habe eine Frage zu einem Script, es geschehen eigenartige Dinge damit! Es scheint ausgefürht zu werden. Jedenfalls bekomme ich die Meldung, welche Felder fehlen, auch wenn die eingegeben wurden. Wenn ich den Teil ->
<INPUT TYPE=HIDDEN name="required" value="Name, Firma, eMail">

heraus nehme passiert gar nichts und ich habe einfach ein leere Seite wenn ich auf "Abschicken" gehe (?!)

Habe Rechte ausgegeben und auch eine Seite angelegt, die ein "Danke für die Mail" anzeigt, aber nichts passiert..gaaaaaanz leer bleibts .. und ich verzweifle nicht nur langsam. Was könnte as Problem sein?

Vielen Dank für die Hilfe im vorraus.
Pet

-->

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Ergoline . happy sun concept .</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<meta name="keywords" content="Sonnenbank, Ergoline, Sonne, Sun, Spaß, Bräune, Körper, Wellness, Sonnenstudio, Erholung, Lifestyle" />

<meta name="description" content="Mit welchem Eindruck man ein Sonnenstudio verlässt, hängt durchaus damit zusammen, mit welchem Eindruck man es betritt. Ergoline .happy sun concept." />

<link rel="stylesheet" type="text/css" href="../sun.css">

</head>

<body bgcolor="#eae9e8" topmargin="0" marginheight="0">


<form name="mail" method="POST" action="/cgi-bin/mailer/mailer.cgi">
<INPUT TYPE=HIDDEN name="redirect" value="http://www.happy-sun-concept.de/inhalte/form_danke.htm">
<INPUT TYPE=HIDDEN name="recipient" value="post@petra-gerlach.de">
<INPUT TYPE=HIDDEN name="sender_email" value="Email">
<INPUT TYPE=HIDDEN name="subject" value="Happy Sun Concept Kontakt">
<INPUT TYPE=HIDDEN name="required" value="Name, Firma, eMail">
<INPUT TYPE=HIDDEN name="export_file" value="kontakt.data">
<INPUT TYPE=HIDDEN name="export_fields" value="Name,Email">



<table class="table" border="0" cellspacing="1" cellpadding="3">
<tr>
<td colspan="2" class="head" height="17" width="100%" align="left">
<span class="headline">Kontakt<br />
</span></td>
</tr>
<tr>

<td class="text" colspan="2" height="16" width="100%">
<span class="font-small">Bitte f&uuml;llen Sie alle mit * markierten Felder aus. (Pflichtfelder)</span></td></tr><tr><td class="text" width="30%"><p class="align">Name*</p></td>
<td class="text"><input class="form" type="text" name="Name" size="28" /></td>
</tr>
<tr><td class="text" width="30%"><p class="align">Firma*</p></td>
<td class="text">
<input class="form" type="text" name="Firma" size="28"></td></tr>
<tr><td class="text" width="30%"><p class="align">Strasse</p></td>
<td class="text"><input class="form" type="text" name="absender_strasse" size="28" /></td>
</tr>
<tr><td class="text" width="30%"><p class="align">PLZ / Ort</p></td>

<td class="text">
<input class="form" type="text" name="absender_ort" size="28"></td></tr>
<tr><td class="text" width="30%"><p class="align">eMail*</p></td>
<td class="text">
<input class="form" type="text" name="eMail" size="28"></td></tr>
<tr><td class="text" width="30%"><p class="align">Ihre Nachricht </p></td>
<td class="text">
<textarea class="form" type="text" name="Mail-Text" cols="25" rows="5"></textarea></td></tr>
<tr>
<td rowspan="2" valign="top" >&nbsp;</td>
</tr>
<tr>
<td align="left" valign="middle">&nbsp;
<input name="submit" type="submit" style="BORDER: #6b6760 1px solid; COLOR: #6b6760; FONT-FAMILY: Arial; FONT-COLOR: #c0bebb; FONT-SIZE: 9px" value="Abschicken" />
<input type="reset" value="L&ouml;schen" style="BORDER: #6b6760 1px solid; COLOR: #6b6760; FONT-FAMILY: Arial; FONT-COLOR: #c0bebb; FONT-SIZE: 9px" name="reset" /> </td>
</tr>
</table>
</div></form>
</body>

</html>

-->

Script

#!/usr/bin/perl
############################################################################
#
# (c) Markus Wolf, 1998-2003
#
############################################################################
#
# mailer.cgi
# COPYRIGHT NOTICE
# Copyright 2002 Markus Wolf
# All Rights Reserved.
#
# EMail : support@perlunity.de
# URL : http://www.perlunity.de
#
# mailer.cgi darf von jedermann kostenlos benutzt und geändert werden,
# solange dieser Copyright-Verweis und die restlichen Kommentare erhalten
# bleiben. Mit dem Einsatz dieses Skripts akzeptieren Sie, daß Markus Wolf
# von jeglicher Haftung und Gewährleistung hinsichtlich des Einsatzes
# befreit ist.
#
# Der Verkauf und die Verbreitung dieses Skripts, auch in modifizierter
# Form, ist ohne vorherige Absprache ausdrücklich untersagt. Mit anderen
# Worten: Bitte fragen Sie mich, bevor Sie versuchen, mit meinem Skript
# Geld zu verdienen.
#
# Um dieses Skript über das Internet oder irgendein anderes Medium
# weiterzuverbreiten, benötigen Sie vorher meine Erlaubnis. In jeden
# Fall müssen der Copyright-Verweis und die restlichen Kommentare
# erhalten bleiben.
#
############################################################################

############################################################################
# Systemeinstellungen
############################################################################

#Wechsel in das aktuelle Verzeichnis
$0 =~ /^(.*)[\/\\].*/ && chdir ($1) ;

#Module
use lib "libs/" ;
use strict ;
use CGI::Carp qw(fatalsToBrowser) ;
use Tie::IxHash ;
use Net::SMTP ;



############################################################################
# Variablendefinition (müssen alle angepaßt werden)
############################################################################

#Sendmail-Pfad (Unix)
my $mailprog = "/usr/sbin/sendmail" ;

#SMTP-Server (Windows) - nur eintragen, wenn über smtp verschickt werden
my $smtpserver = "" ;

#SMTP-Debugging (0-nein / 1-ja)
my $smtpdebug = 0 ;

#SICHERHEIT : Hostnamen die Mail empfangen dürfen -> recipient-Parameter
my @recihosts = ( 'petra-gerlach.de' , 'happy-sun-concept.de' ) ;

#Subjekt der Mail, wenn das Hidden-Feld nicht definiert ist
my $stdsub = "Subject: Mail von www.happy-sun-concept.de";

#Zeitverschiebung in Stunden (+ oder -)
my $zeitverH = 0 ;

#Offline-Modus zum Testen (1=Mail speichern/0=Mail verschicken)
my $offline = 0 ;

#File-Locking (Win9x=0/sonst=1)
my $lock = 1 ;



#############################################################################
# Hauptprogramm starten
#############################################################################

&send_mail() ;



#############################################################################
# Mail verschicken
#############################################################################

sub send_mail {


my $datum=&date_time() ;


###
#Formfelder parsen

my ($MAILHEADER,$MAILFORM,$fehlfeld,$mussfelder)=&parse_form() ;


###
#Fehlercode verarbeiten

unless ($fehlfeld==1) {


###
#Mail verschicken

my ($mailcc,$mailbcc) ;
my $referer = ($ENV{'HTTP_REFERER'}||'kein REFERER vorhanden!') ;
my $absendermail = ($MAILFORM->{$MAILHEADER->{'sender_email'}}||$MAILHEADER->{'recipient'}) ;
my $mailsub = $stdsub ;
my $mailheader = "To: $MAILHEADER->{'recipient'}\n";

$mailheader .= "From: $absendermail\n";
$mailheader .= "X-Mailer: perlunity.de FormMailer \n";

if ($MAILHEADER->{'recipient_cc'}) {
$mailcc = $MAILHEADER->{'recipient_cc'} ;
$mailheader .= "Cc: $MAILHEADER->{'recipient_cc'}\n";
}

if ($MAILHEADER->{'recipient_bcc'}) {
$mailbcc = $MAILHEADER->{'recipient_bcc'} ;
$mailheader .= "Bcc: $MAILHEADER->{'recipient_bcc'}\n";
}

if ($MAILHEADER->{'subject'}) {
$mailsub = $MAILHEADER->{'subject'} ;
}

$mailheader .= "Subject: $mailsub\n\n";
my $mailtext = "-" x 72 . "\n";
$mailtext .= "Mail wurde am $datum verschickt\n";
$mailtext .= "-" x 72 . "\n\n";

foreach my $fn (keys %{$MAILFORM}) {

$mailtext .= "[$fn]\n" ;
$mailtext .= "$MAILFORM->{$fn}\n\n" ;
}

$mailtext .= "-" x 72 . "\n";
$mailtext .= "Script wurde von der IP $ENV{'REMOTE_ADDR'} aufgerufen:\n$referer\n" ;
$mailtext .= "-" x 72 . "\n";


###
#Mail verschicken

&mailing($MAILHEADER->{'recipient'},$absendermail,$mailcc,$mailbcc,$mailsub,$mailheader,$mailtext) ;


###
#Mailadresse speichern

if ($MAILFORM->{$MAILHEADER->{'sender_email'}}) {

open (DAT , ">> data/emails.data") ;
flock(DAT,2) if ($lock==1) ;
print DAT "$MAILFORM->{$MAILHEADER->{'sender_email'}}\n" ;
close (DAT) ;
}


###
#Counter

open (COUNT , "+< data/emails.counter") ;
flock(COUNT,2) if ($lock==1) ;
my $counter=<COUNT>;
seek(COUNT,0,0);
$counter++ ;
print COUNT $counter ;
close (COUNT) ;


###
#Export, wenn definiert

if ($MAILHEADER->{'export_file'} && $MAILHEADER->{'export_fields'}) {

my $export ;

foreach my $ex ( split(/,/,$MAILHEADER->{'export_fields'}) ) {

$MAILFORM->{$ex} =~ s/(\n|\012|\015)+/ /g ;
$export .= $MAILFORM->{$ex}.";" ;
}

open (DAT , ">> data/$MAILHEADER->{'export_file'}") ;
flock(DAT,2) if ($lock==1) ;
print DAT qq($export\n) ;
close(DAT) ;
}
}


###
#Rückgabeseite nach der Mailzustellung

&return_html($fehlfeld,$mussfelder,$MAILHEADER->{'redirect'}) ;


}



#############################################################################
# Formulardaten werden ausgelesen
#############################################################################

sub parse_form {


my (%MAILHEADER,%MAILFORM) ;
my (@required,$buffer,$mussfelder) ;
my $fehlfeld=0 ;

tie %MAILHEADER , "Tie::IxHash" ;
tie %MAILFORM , "Tie::IxHash" ;


###
#Buffer lesen

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});


###
#Werte verarbeiten

foreach my $paar (split(/&/, $buffer)) {

my ($feldnamen, $wert) = split(/=/, $paar);

$feldnamen =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$feldnamen =~ tr/+/ /;

$wert =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$wert =~ tr/+/ /;
$wert =~ s/<!--(.|\n)*-->//g;


if ( $wert && (

$feldnamen eq 'recipient' ||
$feldnamen eq 'recipient_cc' ||
$feldnamen eq 'recipient_bcc' ||
$feldnamen eq 'subject' ||
$feldnamen eq 'redirect' ||
$feldnamen eq 'sender_email' ||
$feldnamen eq 'export_file' ||
$feldnamen eq 'export_fields'
) ) {

$feldnamen =~ s/(\015\012|\015|\012|\n|\r)/ /g ;
$wert =~ s/(\015\012|\015|\012|\n|\r)/ /g ;

$MAILHEADER{$feldnamen} = $wert;

} elsif ($feldnamen eq 'required') {

@required = split(/\|/ , $wert);

} else {

$MAILFORM{$feldnamen} = $wert if ($feldnamen !~ /button/i) ;
}
}


###
#Empfänger-Host checken

my $hosttest1=0 ;
my $hosttest2=0 ;
my $hosttest3=0 ;

foreach my $recihosts (@recihosts) {

if ($MAILHEADER{'recipient'} =~ /$recihosts$/i) {

$hosttest1=1 ;
}

if ($MAILHEADER{'recipient_cc'} && $MAILHEADER{'recipient_cc'} =~ /$recihosts$/i ) {

$hosttest2=1 ;
}

if ($MAILHEADER{'recipient_bcc'} && $MAILHEADER{'recipient_bcc'} =~ /$recihosts$/i ) {

$hosttest3=1 ;
}
}

if ($hosttest1==0) {

$mussfelder = "<font color=\"ff0000\">Mailempfänger nicht zugelassen!</font><br>" ;
$fehlfeld=1 ;
}

if ($hosttest2==0 && $MAILHEADER{'recipient_cc'}) {

$mussfelder = "<font color=\"ff0000\">Mailempfänger (CC) nicht zugelassen!</font><br>" ;
$fehlfeld=1 ;
}

if ($hosttest3==0 && $MAILHEADER{'recipient_bcc'}) {

$mussfelder = "<font color=\"ff0000\">Mailempfänger (BCC) nicht zugelassen!</font><br>" ;
$fehlfeld=1 ;
}


###
#Mussfelder checken

foreach my $require (@required) {

if (!$MAILFORM{$require}) {

$mussfelder.= "<font color=\"ff0000\">$require</font><br>" ;
$fehlfeld=1 ;
}

}

foreach my $require ('recipient','redirect') {

if (!$MAILHEADER{$require}) {

$mussfelder.= "<font color=\"ff0000\">Systemfeld: $require</font><br>" ;
$fehlfeld=1 ;
}

}


###
#Spamcheck

foreach my $key (keys %MAILHEADER) {

if ($MAILHEADER{$key} =~ /\n/) {

$mussfelder.= "<font color=\"ff0000\">Systemfeld: $key (NEWLINE NOT ALLOWED)</font><br>" ;
$fehlfeld=1 ;
}
}

foreach my $key (keys %MAILFORM) {

if ($MAILFORM{$key} =~ /(to|from|cc|bcc)\:\s+/i) {

$mussfelder.= "<font color=\"ff0000\">NOSPAM: $key</font><br>" ;
$fehlfeld=1 ;
}
}



###
#Rückgabe Form-Felder

return(\%MAILHEADER,\%MAILFORM,$fehlfeld,$mussfelder) ;


}



#############################################################################
# Rückgabeseite ausgeben
#############################################################################

sub return_html {


my $fehlfeld=shift ;
my $mussfelder=shift ;
my $redirect=shift ;
my $line ;


###
#Rückgabeseite ausgeben

if ($fehlfeld==1) {

###
#Fehler

print "Content-Type: text/html\n\n" ;

open(RE , "< tmpl/stdfehl.htm") || die "Kann das Fehlertemplate -tmpl/stdfehl.htm- nicht laden !" ;
while ($line=<RE>) {

if ($line =~ /<!--mussfelder-->/i) {
print "$mussfelder";
} else {
print $line ;
}

} close(RE) ;


} else {

###
#Dank-Seite

print "Location: $redirect\n\r\n\r" ;

}


}



############################################################################
# Das eigentliche Mailing ( UNIX/Linux - Sendmail | Windows - SMTP )
############################################################################

sub mailing {


my ($mailto,$mailfrom,$mailcc,$mailbcc,$mailsub,$mailheader,$mailtext) = @_ ;


###
#Absender-Mail checken

unless ($mailfrom =~ /^.*?\@.*?\..*?$/) {

$mailfrom=$mailto ;
}


###
#SMTP-Debug

if ($smtpserver && $smtpdebug==1) {

print "Content-Type: text/html\n\n<pre>" ;
print "$mailto,$mailfrom,$mailsub,$mailheader" ;
}


###
#Mail-Versand

if($offline==1) {

###
#Mail in Datei schreiben (cgi-bin/shop/mail)

open(MAIL,"> ./temp/mail.txt") ;
print MAIL $mailheader ;
print MAIL $mailtext ;
close (MAIL) ;


} else {


if($smtpserver) {

###
#Mail per SMTP unter NT verschicken

my $smtp = Net::SMTP->new( $smtpserver, Hello => $smtpserver , Debug => $smtpdebug );
my $header=qq(To: $mailto\nFrom: $mailfrom\nSubject: $mailsub\n) ;

$smtp->mail($mailfrom);
$smtp->to($mailto , {SkipBad=>1} ) ;
$smtp->to($mailcc , {SkipBad=>1} ) if($mailcc) ;
$smtp->to($mailbcc , {SkipBad=>1} ) if($mailbcc) ;
$smtp->data();
$smtp->datasend($mailheader."\n\n");
$smtp->datasend($mailtext);
$smtp->dataend();
$smtp->quit();


} else {

###
#Mail per SENDMAIL unter Unix verschicken

open(MAIL,"| $mailprog -t") || die "Kann die E-Mail über -$mailprog- nicht verschicken. Es ist eventl. der falsche sendmail-Pfad eingestellt." ;
print MAIL $mailheader ;
print MAIL $mailtext ;
close (MAIL) ;

}
}


}



#############################################################################
# Aktuelles Datum und Uhrzeit zurückgeben
#############################################################################

sub date_time {


my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time+(3600*$zeitverH));


###
#Formatierung

my $datum = sprintf "%02d.%02d.%04d um %02d:%02d" , $mday , $mon+=1 ,$year+=1900 , $hour , $min ;


###
#Rückgabe Datum

return($datum) ;


}



#############################################################################
# ENDE
#############################################################################

[edit]
Titel geändert


Zuletzt bearbeitet von tacker am Do 08.06.2006 10:44, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
m0rb

Dabei seit: 30.09.2004
Ort: Fürth
Alter: 38
Geschlecht: Männlich
Verfasst Do 08.06.2006 10:02
Titel

Antworten mit Zitat Zum Seitenanfang

Ohne dich beleidigen zu wollen - ich glaube kaum, dass irgendjemand hier Zeit und Lust hat, sich diesen ellenlangen Code komplett durchzulesen.

Versuch doch erstmal, die problematischen Stellen zu finden, dann kommste hier sicher weiter *Thumbs up!*

Gruß
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
pet
Threadersteller

Dabei seit: 08.06.2006
Ort: -
Alter: -
Geschlecht: -
Verfasst Do 08.06.2006 10:44
Titel

Antworten mit Zitat Zum Seitenanfang

* Wo bin ich? * problem gefunden...

uff!
  View user's profile Private Nachricht senden
 
Ähnliche Themen [PHP + Flash] Formmail als HTML
Formmail und Flash funzt net
Konfiguration FormMail.pl (Matt's Script Archive)
Formmail - Anzahl der Resultate um eins verringern?
Html abschicken
Kontaktformular im IE8 abschicken
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.