Chris: perl mailer - sicherheitsabfrage einbauen...

hallo zusammen,
kurze frage...ich nutze folgendes skript um mir die daten aus einem vordruck per email zusenden zu lassen. läuft auch alles einwandfrei...

[code}
#!/usr/bin/perl

my $from = "Absender";
my $email = "meine@domain.de";
my $subject = "Restaurant-Bericht";

my $key = '';
my $val = '';
my %in = ();
my $in = '';
if ( $ENV{REQUEST_METHOD} eq 'POST'){
read(STDIN, $in, $ENV{CONTENT_LENGTH});
}else{
$in = $ENV{QUERY_STRING};#GET lesen
}

for(split/&/,$in){##Input nach Paaren splitten key=val
($key , $val) = split/=/;#splitten nach key=val
$key =~ y/+/ /;# + durch Space ersetzen
$key =~ s/%(..)/pack("c",hex($1))/ge;#Sonderzeichen decodieren
$val =~ y/+/ /;# + durch Space ersetzen
$val =~ s/%(..)/pack("c",hex($1))/ge;

$in{$key} .= $val;
}

print "Location: ../modules.php?name=Danke\n\n";

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

open (MAIL,"|/usr/sbin/sendmail -t");
print MAIL "From:$from\n";
print MAIL "To:$email\n";
print MAIL "Subject:$subject\n\n";
print MAIL"Anschrift => $in{'anschrift'}\n";
print MAIL"Art => $in{'art'}\n";
print MAIL"Raum => $in{'raum'}\n";
print MAIL"Telefon => $in{'telefon'}\n";
print MAIL"Telefax => $in{'telefax'}\n";
print MAIL"Öffnungszeiten => $in{'zeiten'}\n";
print MAIL"Essen => $in{'essen'}\n";
print MAIL"Flair => $in{'flair'}\n";
print MAIL"Personal => $in{'personal'}\n";
print MAIL"Preise => $in{'preise'}\n";
print MAIL"Homepage => $in{'homepage'}\n";
print MAIL"eMail => $in{'email'}\n";
print MAIL"Tester => $in{'ihrname'}\n";
print MAIL"Testermail => $in{'ihreemail'}\n";

close (MAIL);
[/code}

nun hätte ich gerne, dass überprüft wird, ob wenigstens ein name des senders (tester) und seine email (testeremail) angegeben worden ist; quasi als kleiner schutz, damit nicht als einer doof auf senden drückt, obwohl gar keine angaben getätigt worden sind...

bitte um hilfe wie dies zu bewerkstelligen ist.

vielen dank...chris

  1. Hallo,
    In so einem grottenschlechten Script so etwas einzubauen, ist schon eine kleine Herausforderung.
    Ich würde das überhaupt ganz von vorne beginnen und es als richtiges CGI Script schreiben, wo eben je nach "Zustand" die richtigen Subroutinen zurückgibt.
    zB Wenn keine Name eingegeben wurde, gib die Subroutinen
    htmlanfang();
    fehlermeldung();
    htmlende();
    aus.
    In deinem Script könntest du zwar eine Abfrage leicht einbauen, sieht aber dann nicht sehr professionell aus.
    Setzte das ganze sendmail in eine if Schleife und verbinde eben die Abfrage if ($name eq '') { #tu etwas }

    $xNeTworKx.

    --
    Weissagung der Cree:
    Erst wenn der letzte Baum gerodet, der letzte Fluss vergiftet, der letzte Fisch gefangen, werdet ihr feststellen, dass man Geld nicht essen kann!
  2. hallo zusammen,
    kurze frage...ich nutze folgendes skript um mir die daten aus einem vordruck per email zusenden zu lassen. läuft auch alles einwandfrei...

    Nun, also...

    Das was Du von uns beantwortet wissen willst ist derart einfach, daß Dir folgende Antwort gegeben sei:

    In diesem Forum werden grundlegende Kenntnisse erwartet. Das, wonach Du fragst, gehört in diese Kategorie. So einfache Konstrukte wie das Überprüfen einer Variable auf einen Inhalt findest Du in jedem Handbuch auf den ersten 50 Seiten, wenn man unterstellt, daß auf den ersten 40 Seiten sich über Perl und die Lebensgeschichte von Larry, dem Autor und dessen Frau ausgelassen wird.

    Ich empfehle Dir also wärmstens eines der zahlreichen Tutorials im Netz zu benutzen, ein Buch zu kaufen oder ein Seminar zu besuchen.

    http://www.google.de/search?q=perl+tutorial&ie=UTF-8&oe=UTF-8&hl=de&btnG=Google-Suche&meta=lr%3Dlang_de

    Vielleicht bist Du jetzt sauer, das mag sein. Aber verstehe bitte, daß dieses Forum mit allereinfachsten Anfragen vollkommen überlastet wäre.

    Alternativ kannst Du auch darüber nachdenken, Dir Deine Skripte schreiben zu lassen. Es gibt hier im Forum Leute, die leben davon.

    fastix