Habe KEINE Ahnung - Formular
Marcel
- cgi
Hallo,
ich muss gleich vorwegnehmen, dass ich mit CGI KEINE Ahnung habe. Ich versuche mir das notwendigste über Learning-By-Doing beizubringen. Leider stößt man da relativ schnell an seine Grenzen.
Ich hoffe, dass mir hier jemand helfen kann.
Ich habe ein Formular, in dem ich den Empfänger auswählen kann. Das CGI Script ist das, was auf der SELFHTML Seite als Beispiel gegeben ist. (http://aktuell.de.selfhtml.org/tippstricks/cgiperl/form-mail/index.htm#beispiel)
Dieses Skript arbeitet eigentlich nur mit einem festen Empfänger. Ich habe mich ein wenig umgesehen bei Perl und CGI usw. und das Skript ein wenig abgeändert, damit das Skript, abhängig vom Wert des Feldes "Empfaenger" einen Empfänger auswählt und das Formular dort hinschickt. Vermutlich habe ich das komplett falsch gemacht.
Wenn ich das Formular abschicke, sagt der Browser was von internal error or misconfiguration....
Vielleicht kann mir jemand helfen.
Hier mal der Code meines HTML-Formulars und des geänderten Skripts:
HTML DATEI ANFANG
<form action="./cgi-bin/selfmail.pl" method="post">
<input type="hidden" name="return" value="./kontanktformular_danke.htm">
<input type="hidden" name="delimiter" value=": ">
<input type="hidden" name="subject" value="Anfrage über Kontakt-Formular">
<select name="Anrede" size="1">
<option value="Herr">Herr
<option value="Frau">Frau</select>
<p>Vorname</p>
<input type="Text" name="Vorname" value="" size="30" maxlength="30">
<p>Name</p>
<input type="Text" name="Name" value="" size="30" maxlength="30">
<p>Emailadresse</p>
<input type="Text" name="Email" value="" size="40" maxlength="40">
<p>Mitteilung senden an:</p>
<select name="Empfaenger" size="1">
<option value="MA1">Mitarbeiter1
<option value="MA2">Mitarbeiter2
<option value="MA3">Mitarbeiter3
<option value="MA4">Mitarbeiter4
</select>
<p>Mitteilungstext</p>
<textarea name="Mitteilung" cols="40" rows="15"></textarea>
<input type="reset" value="Formular löschen">
<input type="Submit" name="Senden" value="Absenden">
</form>
HTML DATEI ENDE
CGI SKRIPT ANFANG
#!/usr/bin/perl
$Sendmail_Prog = "/usr/lib/sendmail";
use CGI;
$query = new CGI;
@names = $query->param;
$delimiter = $query->param('delimiter'); # ---> Begrenzerzeichen zwischen name und value
$returnhtml = $query->param('return'); # ---> URL für Dankeseite
$subject = $query->param('subject'); # ---> E-Mail-Subject
$subject =~ /\s/ /g
if $query->param('Empfaenger') eq 'MA1'{
$mailto = 'Email1@hier.dort'
}
if $query->param('Empfaenger') eq 'MA2'{
$mailto = 'Email2@hier.dort'
}
if $query->param('Empfaenger') eq 'MA3'{
$mailto = 'Email3@hier.dort'
}
if $query->param('Empfaenger') eq 'MA4'{
$mailto = 'Email4@hier.dort'
}
$mailtext = "";
foreach(@names) {
$name = $_;
@values = "";
@values = $query->param($name);
if($name ne "return" && $name ne "subject" && $name ne "delimiter") {
foreach $value (@values) {
$mailtext = $mailtext.$name;
$mailtext = $mailtext.$delimiter;
$mailtext = $mailtext.$value."\n";
}
}
}
open(MAIL,"|$Sendmail_Prog -t") || print STDERR "Mailprogramm konnte nicht gestartet werden\n";
print MAIL "To: $mailto\n";
print MAIL "Subject: $subject\n\n";
print MAIL "$mailtext\n";
close(MAIL);
print "Location: $returnhtml\n\n";
CGI SKRIPT ENDE
Hallo Marc,
Dieses Skript arbeitet eigentlich nur mit einem festen Empfänger.
was auch sinnvoll ist.
Ich habe mich ein wenig umgesehen bei Perl und CGI usw. und das Skript ein wenig abgeändert, damit das Skript, abhängig vom Wert des Feldes "Empfaenger" einen Empfänger auswählt und das Formular dort hinschickt.
Ist Dir bewusst, dass dies gar keine gute Idee ist. Dein Formmailer könnte zum Versenden von Spam missbraucht werden. Wenn dies der Fall ist, möchte ich nicht in Deiner Haut stecken.
Freundliche Grüße
Vinzenz
Hi Vinzenz,
Ich habe mich ein wenig umgesehen bei Perl und CGI usw. und das Skript ein wenig abgeändert, damit das Skript, abhängig vom Wert des Feldes "Empfaenger" einen Empfänger auswählt und das Formular dort hinschickt.
Ist Dir bewusst, dass dies gar keine gute Idee ist. Dein Formmailer könnte zum Versenden von Spam missbraucht werden. Wenn dies der Fall ist, möchte ich nicht in Deiner Haut stecken.
Wie meinst Du das? Weil die Adressen im Skript stehen? Wie soll das Skript zum Spammen verwendet werden?
Wie sollte man es dann realisieren, wenn ich dem Nutzer meiner Internetseite die Möglichkeit geben möchte abhängig von seinem Anliegen einen entsprechenden Ansprechpartern auszuwählen? Klar könnte ich für jeden Empfänger ein extra Formular machen. Aber ....???
Danke und Gruß
Marcel
Ich habe mich ein wenig umgesehen bei Perl und CGI usw. und das Skript ein wenig abgeändert, damit das Skript, abhängig vom Wert des Feldes "Empfaenger" einen Empfänger auswählt und das Formular dort hinschickt.
Ist Dir bewusst, dass dies gar keine gute Idee ist. Dein Formmailer könnte zum Versenden von Spam missbraucht werden. Wenn dies der Fall ist, möchte ich nicht in Deiner Haut stecken.
[ ] Du hast dir das Skript angeschaut
Struppi.
Moin.
Drei kleine Fehler haben sich eingeschlichen:
1. Eine Zeile wird in Perl mit einem Semikolon beendet (mehrfach in Deinem Script).
2. Was soll Perl bei Anwendung des regulären Ausdrucks auf $subject machen? Es fehlt das "s" für substitute. (Die Zeile ist schon im Beispiel auf SelfHTML falsch.)
3. Bei bedingten Verzweigungen (if) muß die Bedingung in Klammern stehen.
Hier die Korrekturen:
$subject =~ /\s/ /g
$subject =~ s/\s/ /g;
if $query->param('Empfaenger') eq 'MA1'{
$mailto = 'Email1@hier.dort'
}
if ($query->param('Empfaenger') eq 'MA1') {
$mailto = 'Email1@hier.dort';
}
Gruß Frank