perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 23
Click for quality!




11.02.2012 / 12:20

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragHilfe zum Mailversand
Seitenanfang
Hallo zusammen,
ich verwende folgendes Perl-Script (stammt nicht von mir!), welches auch soweit funktioniert.
Da meine Kenntnisse in Perl eher bescheiden sind, suche ich eure Hilfe. Wie kann ich überprüfen ob die Felder Name und Email nicht leer sind bzw die Email Adresse richtig eingegeben wurde. Zwar prüfe ich auf der Eingabeseite mit Java, aber wenn jemand Java deaktiviert hat könte man auch eine "leere" Mail schicken, was ich vermeiden will. Vielleicht hat auch noch jemand ein paar Erläuterungen zu dem Script?
vielen Dank im voraus!


#!C:/XAMPP/xampp/perl/bin/perl.exe

$MAIL="c:/XAMPP/xampp/sendmail/sendmail.exe";

#
#
use CGI;
$\="\n";

$req=new CGI;
print $req->header;

# THE MAIN EVENT
# -------------------
%fields=&read_fields;
&send_form;
&print_thanks_page;
exit(0);

# SUBROUTINES
# -------------------

sub read_fields{
my(%fields);
foreach $f ($req->param){
$name=&clean_name($f);
$fields{$f}{name}=$name;
$value=&clean_value($f);
$fields{$f}{value}=$value;
}
return(%fields);
}

sub clean_name{
local($f)=shift;
$f=~s/^F\d+_//;
$f=~s/_/ /g;
return($f);
}

sub clean_value{
local($f)=shift;
local(@val,$val);
@val=$req->param($f);
$#val-- unless $val[-1]=~/\S/;
$val=join(" - ",@val);
return($val);
}

sub send_form{
return unless $fields{'mailto'}{'value'}="postmaster@localhost";

open(MAIL,"| $MAIL -t") or error("can't send mail");

print MAIL "To: $fields{'mailto'}{'value'}";
print MAIL "From: $fields{'F04_Nachname'}{'value'} <$fields{'Email'}{'value'}>";
print MAIL "Reply-To: $fields{'Email'}{'value'}";
print MAIL "Subject: $fields{'subject'}{'value'}";
print MAIL "";

$\="";
$,=" - ";

foreach $f (sort keys %fields){
next unless $f=~/^F\d/;
if ($fields{$f}{name} =~ /Comment/i) {
print MAIL "\n";
print MAIL "$fields{$f}{value}";
print MAIL "\n";
}
else{
print MAIL "$fields{$f}{name}: ";
print MAIL ($fields{$f}{value} ? $fields{$f}{value} : @{$fields{$f}{'values'}});
print MAIL "\n";
}
}

$,="";
close(MAIL);
}

sub print_thanks_page{
$\="";
print <<"EOM";
<HTML>
<HEAD>
<TITLE>Herzlichen Dank!</TITLE>
</HEAD>
<img src="C:/xampp/xampp/cgi-bin/logo_60x60.jpg">
<BODY BGCOLOR="#FFFFFF" TEXT="#003399">
<FONT FACE="Arial,Helvetica,sans-serif" SIZE="3">
<p>
Herzlichen Dank, $fields{'F02_Anrede'}{'value'} $fields{'F04_Nachname'}{'value'}, für Ihre Interesse.<br>
Wir werden Ihre Anfrage schnellstmöglich bearbeiten.<p>
Sollten Sie Fragen oder Bemerkungen haben, werden wir diese per eMail an $fields{'Email'}{'value'} beantworten.<p>
<B></B><p>
<p><p>
<A HREF="http://localhost/html/Anfragen.html" TARGET="_self">Zurück zur Home Page</A>

</FONT>
</BODY>
</HTML>
</form>
EOM
}

Datum: 11.09.2005-15:59

Beitragre: Hilfe zum Mailversand
Seitenanfang
Hi,

zuerstmal ist es komplett doppelt gemoppelt, im Hash noch eine Ebene "name"/"value" einzubauen.

"name" sollte einfach der key für den value "value" sein, aber OK, der code funktioniert ja...

Zum Testen auf leere (Pflicht-)felder:


# THE MAIN EVENT
# -------------------
%fields=&read_fields;

if ($fields{'name'} && $fields{'email'}) {
&send_form;
&print_thanks_page;
}
else {
&print_fehler_seite;
}
exit(0);

Hoffe, das hilft Dir auf die Sprünge.

Gruss,
Sven

Datum: 15.09.2005-10:02

-






-
-