Alfred: JavaScript und VALUE-Tag

Hallo Leute!

Vorweg ich bin JS-Neuling.

Folgende Situation: Ich hab ein Formular das sich auf ein CGI bezieht. Leider muss ich im Formular angeben an welche Email-Adresse die Formulardaten versendet werden. Jetzt möchte ich verhindern, dass Spam-Robots die Email-Adress herausfinden, also bau ich mir die Adresse im JS zusammen. Wie schreib bau ich mir das Ding jetzt im VALUE-Tag am besten zusammen?

Hier mal der Auszug aus dem Code, beim Formular die ??? beachten. Danke schonmal!

<script type="text/javascript">

function WriteAdress() {
   var prefix = "mustermann";
   var domain = "musterdomain.de";
   document.write(prefix + '@' + domain);
}

</script>

<FORM NAME="form" METHOD="post" ACTION="/cgi-bin/formular">
<INPUT TYPE="hidden" NAME="email" VALUE="???">

  1. Hi,

    anstatt

    document.write(prefix + '@' + domain);

    einfach

    document.form.email.value=prefix + '@' + domain;

    Ciao
    Andreas

    1. hi!
      warum willst du die adresse überhaupt per formular übergeben, wenn sie sich nicht ändert? schreib sie serverseitig fest in dein cgi mit rein, da kann sie kein spambot lesen.
      und nenn das cgi nicht gerade mail** oder formmail oder send** oder so.

      freundl. grüsse, raik

      1. Hi,

        raik hat Recht - das wäre sowieso viel sicherer, denn so wie's jetzt ist, könnte jeder Dein CGI von jeder x-beliebigen URL aus verwenden. So 'ne Art Open Relay wäre das dann wohl.

        Ciao
        Andreas

        1. raik hat Recht - das wäre sowieso viel sicherer, denn so wie's jetzt ist, könnte jeder Dein CGI von jeder x-beliebigen URL aus verwenden. So 'ne Art Open Relay wäre das dann wohl.

          Danke schonmal. Aber leider funktioniert nicht. Das ganze schaut jetzt so aus:

          <script TYPE="text/JavaScript">
          var prefix = "test";
          var domain = "test.de";
          document.formular.email.value=prefix + '@' + domain;
          </script>

          <FORM NAME="formular" METHOD="post" ACTION="/cgi-bin/formular" OnSubmit="return CheckInput()">
          <INPUT TYPE="hidden" NAME="email">

          Er schreibt beim Objekt "Email" den Value nicht. Wenn ich den Wert auslese erhalte ich NULL. Ideas?

          1. Hi,

            das ist vielleicht ein Timing-Problem. So wie Du das schreibst, versucht das JavaScript in ein Formularelement zu schreiben, dass es zu diesem Zeitpunkt noch nicht gibt, weil es erst weiter unten definiert wird. D.h.: Versuch' mal das JavaScript nach Abschluss des Formulars durch "</form>" zu platzieren, das sollte helfen.

            Ciao
            Andreas

            1. das ist vielleicht ein Timing-Problem. So wie Du das schreibst, versucht das JavaScript in ein Formularelement zu schreiben, dass es zu diesem Zeitpunkt noch nicht gibt, weil es erst weiter unten definiert wird. D.h.: Versuch' mal das JavaScript nach Abschluss des Formulars durch "</form>" zu platzieren, das sollte helfen.

              Jo danke hat geklappt. Habe das JS ans Ende gesetzt. Leider hab ich aber ein anderes Problem.

              Ich hab jetzt noch eine Funktion eingebaut welche das Formular nach fehlender Eingabe absucht. Diese wird jetzt nicht ausgeführt?? Woran liegt das nun schon wieder?

              <SCRIPT TYPE="text/JavaScript">

              var prefix = "test";
              var domain = "domain.de";
              document.formular.email.value=prefix + '@' + domain;

              function CheckInput() {
               for(i=0; i<document.forms.elements.length; ++i)
                if(document.forms.elements[i].value == "")  {
                  alert("Bitte alle Felder ausfuellen.");
                      document.forms.elements[i].focus();
                      return false;
                 }
                return true;
              }

              </SCRIPT>

              1. Hi,

                als erstes fällt mir auf, dass es "document.forms.elements" nicht gibt. Entweder "document.forms['formular'].elements" oder besser gleich "document.formular.elements". Geht's damit?

                Ciao
                Andreas

                1. als erstes fällt mir auf, dass es "document.forms.elements" nicht gibt. Entweder "document.forms['formular'].elements" oder besser gleich "document.formular.elements". Geht's damit?

                  Doch es geht! Hab es aus einem Beispiel bei SelfHTML. Leider hab ich nach einigen Tests einen Fehler reingemacht gehabt. Jetzt geht's wieder. Danke nochmals für deine Hilfe.

                  So sieht das fertige JS aus:

                  <SCRIPT TYPE="text/JavaScript">

                  var prefix = "meine";
                  var domain = "adresse.de";
                  document.formular.email.value=prefix + '@' + domain;

                  function CheckInput() {
                   for(i=0; i<document.forms[0].elements.length; ++i)
                    if(document.forms[0].elements[i].value == "")  {
                      alert("Bitte alle Felder ausfuellen.");
                          document.forms[0].elements[i].focus();
                          return false;
                     }
                    return true;
                  }
                  </SCRIPT>

  2. hi,

    Folgende Situation: Ich hab ein Formular das sich auf ein CGI bezieht. Leider muss ich im Formular angeben an welche Email-Adresse die Formulardaten versendet werden. Jetzt möchte ich verhindern, dass Spam-Robots die Email-Adress herausfinden

    das ein spam-bot _deine_ emailadresse herausfinden könnte, ist dein geringstes problem.

    viel grösser ist die gefahr, dass ein spammer dein CGI-script nimmt, um darüber selber spammails zu verschicken - er braucht lediglich das absenden deines formulares simulieren ...

    gruss,
    wahsaga