linux-l: CGI-Problem

Manuel Tennert mtennert at metagate.meta-systems.de
Do Sep 7 14:36:57 CEST 2000


So habe jetzt die Absichjerung in folgendem Script eingebaut:

#!/usr/bin/perl -w


#$backurl = "http://www.german-sound.de/mobiledisco.htm";
$backname = "'UMEX-HOMEPAGE'";
$sendmail = '/usr/sbin/sendmail';
# Pfad zum SENDMAIL-Programm Ihres Servers.


$recipient = 'GTennert at t-online.de';
# Empfaenger-Adresse des Formulars.


$sender = 'http://pc.exit.de/munder/formular.htm';
# Formular wurde von dieser Seite gesendet.
# kann auch der Name der Homepage sein.


$subject = 'Anfrage-Formular';
# Betreff/Subject des Formulars.


$danke = 'http://pc.exit.de/munder/danke.htm';
# Die Seite die nach dem Versand des Formulars angezeigt wird.
# Kann auch der relative Pfad zum Dokument sein
'/home/www/hippo/danke.htm'
# >> KEINE URL ANBEBEN <<




######################################################
###        AB HIER BITTE NICHTS VERAENDERN         ###
######################################################

use CGI;
$query = new CGI;

foreach $field (sort ($query->param)) {
    foreach $value ($query->param($field)) {
        $mail_body .= "$field: $value\n";
    }
}

if (($email = $query->param('07_email')) and
    ($query->param('07_email') =~ /@/)) {

    if ($name = $query->param('01_name')) {

        $name =~ s/"//g; # lose any double-quotes in name
        $sender = "\"$name\" <$email>";
    } else {

        $sender = "$email";
    }
}
#absicherung
if ($field{'Name'}!='')
{
<-----absicherung
open(MAIL, "|$sendmail -oi -t") or die "FEHLER $sendmail: $!\n";
print MAIL "To: $recipient\n";
print MAIL "From: $sender\n";
print MAIL "Subject: $subject\n\n";
print MAIL "$mail_body";
close(MAIL) or die "FEHLER $sendmail: $!\n";
print ("Content-Type: text/html\n\n");
print ("<html><head><title>Vielen Dank</title></head>\n");
print ("<body><h1>Vielen Dank. Ihre Bestellung wurde
aufgenommen.</h1>\n");
#print("<a href=\"$backurl\">Zurück zur $backname</a><hr>\n");
open (dankefile, "$danke");
@dankefile = <dankefile>;
#print "@dankefile\n";
}
else {
print ("Content-Type: text/html\n\n");
print ("<html><head><title>Eingabe Fehlerhaft</title></head>\n");
print ("<body><h1>Ein oder mehrere Felder wurden nicht
ausgefuellt</h1>\n");
}


Leider aber funktioniert das nicht ganz ! Selbst wenn man im Feld: Name
etwas eingegeben hat kommt die Meldung Ein oder mehrere Felder wurden
nichtr ausgefuellt !!
Wo liegt mein Fehler....hoffe jemand weiß Rat !!!


Manuel



Mehr Informationen über die Mailingliste linux-l