Benno: Wie "option value" aus <SELECT>-Feld auslesen.

Habe ein fertiges CGI-Script zum Versenden eines E-Mail-Formulars verifiziert, das mit der Angabe
      $recipient = 'beispiel@adresse.de';
auch funktioniert.
Ich würde nun der Variable $recipient gerne den selektierten Wert einer Auswahlliste zuweisen, um die Auswahl zwischen mehreren E-Mail-Adressen anzubieten:
 <FORM NAME="kontakt"....>
...
<SELECT NAME="vorname" ....>
...
<OPTION VALUE="otto@adresse.de">Otto
<OPTION VALUE="rudi@adresse.de">Rudi
...
</SELECT>
</FORM>

Wie muß ich das entsprechende Script editieren?

Vieln Dank für die Hilfe.

  1. hi,

    Habe ein fertiges CGI-Script zum Versenden eines E-Mail-Formulars verifiziert, das mit der Angabe
          $recipient = 'beispiel@adresse.de';
    auch funktioniert.
    Wie muß ich das entsprechende Script editieren?

    tja, ich würde sagen so, dass es den wert für $recipient dynamisch aus den übergebenen daten übernimmt ... (mehr ist ohne dein script zu kennen nicht dazu zu sagen.)

    aber aufpassen, eine abfrage ob die emailadresse auchwirklich zu den von dir "erlaubten" gehört solltest du trotzdem noch einbauen, andernfalls lässt sich dein scriptnämlich prima zum zuspammen anderer emailadressen missbrauchen.

    gruss,
    wahsaga

    1. tja, ich würde sagen so, dass es den wert für $recipient dynamisch aus den übergebenen daten übernimmt ... (mehr ist ohne dein script zu kennen nicht dazu zu sagen.)

      Daran soll es nicht scheitern:

      #! /usr/bin/perl

      Pfad zum Perl-Interpreter, abhängig vom jeweiligen Hoster

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

      cgi-lib.pl und mail-lib.pl laden

      require "cgi-lib.pl";
        &ReadParse(*form_data);
        require "mail-lib.pl";

      Anpassen: Die Seite, zu der es anschließend zurück geht und

      #           die E-Mail-Adresse, an die geschickt wird.
        $backurl = "http://www.xyz.de";
        $recipient = 'beispiel@test.de';

      Beim ersten Aufruf oder nach unvollständiger Eingabe Formular ausgeben

      if ($form_data{'action'} eq "add" || $ENV{'REQUEST_METHOD'} eq "GET")
          {
          print <<"    end_of_html";
          <HTML><HEAD><TITLE>Test</TITLE>
      <link rel="stylesheet" href="../stylesheets/standard.css">
      </HEAD>
      <BODY>
              <H1>Kontakt-Formular</H1>
          <P>
              Bitte füllen Sie das untenstehende Formular vollständig aus.
          end_of_html

      &output_add_form;
          exit;
          }

      Sonst die übergeben Daten zur E-Mail verarbeiten

      @form_variables = keys (%form_data);
        foreach $field (@form_variables)
          {
          if ($form_data{$field} eq "" )
            {
            &missing_required_field_data();
            }
          }

      #######################################################################
      #                    E-Mail an $recipient senden                      #
      #######################################################################

      $email_of_guest = "$form_data{'email'}";
          $email_subject = "$form_data{'subj'}";

      $email_body .= "Sie haben eine neue E-Mail erhalten:\n\n";
          $email_body .= "------------------------------------\n";
          $email_body .= "Name: $form_data{'realname'}\n";
          $email_body .="Absender: <$form_data{'email'}>\n";
          $email_body .="Betreff: <$form_data{'subj'}>\n\n";
          $email_body .= "$form_data{'content'}\n";

      Benutzt die send_mail subroutine aus mail-lib.pl library

      Der Server muss sendmail unterstützen und das Aufrufen

      aus einem CGI-Skript gestatten

      &send_mail("$email_of_guest", "$recipient",
                     "$email_subject", "$email_body");

      #######################################################################
      #             Bestätigungsseite mit Link zurück ausgeben              #
      #######################################################################

      print <<"  end_of_html";
        <HTML><HEAD><TITLE>Test</TITLE>
      <link rel="stylesheet" href="../stylesheets/standard.css">
      </HEAD><BODY>
          <H1>Kontakt-Formular</H1>

      </body></html>\n
        end_of_html
        exit;

      #######################################################################
      #                      Eingabe war unvollständig                      #
      #######################################################################

      sub missing_required_field_data
          {
          print <<"    end_of_html";
          <HTML><HEAD><TITLE>Test</TITLE>
      <link rel="stylesheet" href="../stylesheets/standard.css">
      </HEAD><BODY>
          <H1>Kontakt-Formular</H1>
       <P>Bitte füllen Sie das untenstehende Formular <span class="form">vollständig</span> aus!
          end_of_html
          &output_add_form;
          exit;
          }

      #######################################################################
      #                     E-Mail-Formular ausgeben
      #######################################################################

      sub output_add_form
          {
          print <<"    end_of_html";
      <DIV class="form3">
          <FORM METHOD = "POST" ACTION = "datenpost.cgi" style="width:95%" name="kontakt">
      <TABLE class="form3">
          <TR> <TH class="form3">Bereich:</TH><TD class="form3">
       <select size="1" name="bereich">
      <option value="otto@test.de" Selected>Otto
      <option value="rudi@test.de">Rudi
      <option value="karl@test.de">Karl
      <option value="hans@test.de">Hans
      <option value="heiner@test.de">Heiner
      </select></TD></TR><TR>

      <TH class="form3">Name:</TH>
          <TD class="form3"><INPUT TYPE = "text" NAME = "realname" SIZE = "40"
              VALUE = "$form_data{'realname'}"></TD>
          </TR><TR>
          <TH class="form3">E-Mail:</TH>
          <TD class="form3"><INPUT TYPE = "text" NAME = "email" SIZE = "40"
                     VALUE = "$form_data{'email'}"></TD>
          </TR><TR>
          <TH class="form3">Betreff:</TH>
          <TD class="form3"><INPUT TYPE = "text" NAME = "subj" SIZE = "50"
                     VALUE = "(( Ihr Anliegen ))"></TD>
          </TR><TR>
          <TH class="form3">Nachricht:</TH>
          <TD class="form3"><TEXTAREA NAME = "content" COLS = "60" ROWS = "8">
          $form_data{'content'}
          </TEXTAREA></TD>
          </TR></TABLE>
          <CENTER>
          <INPUT TYPE = "submit" value=" Absenden ">

      <input type="reset" value="Löschen"></th>

      </CENTER>
          </FORM></DIV>
          <P>
          <A HREF = "$backurl"><SPAN class="form3">Zur Formularseite</SPAN>

      <P ALIGN=Left>

      </BODY>
          </HTML>
          end_of_html
          }

      aber aufpassen, eine abfrage ob die emailadresse auchwirklich zu den von dir "erlaubten" gehört solltest du trotzdem noch einbauen, andernfalls lässt sich dein scriptnämlich prima zum zuspammen anderer emailadressen missbrauchen.

      Könnte man das vermeiden, indem man die E-Mail-Adresse zusammen bastelt, etwa so
      $recipient_vorne = option.value.selected
      $recipient = recipient_vorne && "@test.de"