Spider: Werte aus PHP im HTML per Script auswerten

Ich hoffe, ich bin im richtigen Forum, weil mein Problem sowohl mit PNP als auch mit Javascript zu tun hat.

Folgendes

Das hier ist mein PHP mit dem ich Captcha erzeuge.
Hab das aus dem Internet.

<?php
   session_start();
   error_reporting(E_ALL);
   unset($_SESSION['captcha_spam']);

   function randomString($len) {
      function make_seed(){
         list($usec , $sec) = explode (' ', microtime());
         return (float) $sec + ((float) $usec * 100000);
      }
      srand(make_seed());
      //Der String $possible enthält alle Zeichen, die verwendet werden sollen
      $possible="ABCDEFGHJKLMNPRSTUVWXYZabcdefghkmnpqrstuvwxyz23456789";
      $str="";
      while(strlen($str)<$len) {
        $str.=substr($possible,(rand()%(strlen($possible))),1);
      }
   return($str);
   }

   $text = randomString(5);  //Die Zahl bestimmt die Anzahl stellen
   $_SESSION['captcha_spam'] = $text;

   header('Content-type: image/png');
   $img = imagecreatefrompng('Captcha/captcha.png'); //Backgroundimage
   $color = imagecolorallocate($img, 000, 134, 139); //Farbe
   $ttf = "Captcha/arial.ttf"; //Schriftart
   $ttfsize = 16; //Schriftgrösse
   $angle = rand(3,0);
   $t_x = rand(15,0);
   $t_y = 20;
   imagettftext($img, $ttfsize, $angle, $t_x, $t_y, $color, $ttf, $text);
   imagepng($img);
   imagedestroy($img);
?>

Das hier ist mein Javascript mit dem ich die Prüfung des Feldes Sicherheitscode durchführen möchte.

// Captcha Sicherheits Prüfung //
if(document.Kontakt_Formular.Captcha_Ptuefung.value == ''){
alert("Bitte füllen Sie das Sicherheitsfeld aus!");
document.Kontakt_Formular.Captcha_Ptuefung.focus();
document.getElementById('Sicherheitscode_Text').style.color="#F00";
document.getElementById('Sicherheitscode_Text').style.fontWeight="bold";
return false;
}else{
var bild = document.Kontakt_Formular.Bild_Captcha.value;
var sicherheit = document.Kontakt_Formular.Captcha_Ptuefung.value;
if (bild != sicherheit){
alert("Bitte geben Sie Sicherheitscode korrekt ein!");
document.Kontakt_Formular.Captcha_Ptuefung.focus();
document.getElementById('Sicherheitscode_Text').style.color="#F00";
document.getElementById('Sicherheitscode_Text').style.fontWeight="bold";
return false;
}else{
document.getElementById('EMail_Text').style.color="#000";
document.getElementById('EMail_Text').style.fontWeight="normal";

document.Kontakt_Formular.submit();
}

und hier ist das alles in mein HTML eingebaut

<tr>
<td><label id="Sicherheitscode_Text" for="Captcha_Ptuefung">Sicherheitscode</label></td>
<td>
<p class="Formular-Checkboxen_Tabelle">
<img class="Formular-Checkboxen_Tabelle" src="../PHPScripts/Captcha_Pruefung.php" id="Bild_Captcha" border="0" title="Sicherheitscode">
<input class="Formular-Captchafeld" type="text" id="Captcha_Ptuefung" name="Sicherheitscode" maxlength="5">
<input class="Button_Captcha" type="Button" id="Code_aktualisieren" value="Sicherheitscode erneuern" onClick="location.reload();">
</p>
</td>
</tr>

Mein Problem ist... Der vergleich finden zwar statt, aber der Wert aus dem Catchafeld (id="Bild_Captcha") wird nicht richtig ausgewertet.

  1. Hallo,

    var bild = document.Kontakt\_Formular.Bild\_Captcha.value;

    was genau soll denn jetzt in Bild drin stehen? ein Bild hat keinen Value und erstecht nicht den des Captcha Codes.

    wenn du die Überprüfung mit JS machen willst müsstest du einen HTTP Request an eine PHP Datei stellen welche $_SESSION['captcha_spam'] ausliest und ausgibt und dann damit vergleichen.

    ich würde aber dringendst empfehlen, die Prüfung in PHP zu erledigen. Denn
    -dort hast du direkt Zugriff auf die Session mit dem Captcha Wert
    -mit JS ist der Sinn des Captchas mehr oder weniger gleich Null weil wenn der Sicherheitscode im Quelltext (im JS Teil) steht ist er wieder durch den Computer auszulesen.

    Viele Grüße,
    Tim

  2. sorry habe was vergessen:

    es gibt auch noch die Möglichkeit, dass du den Inhalt des Eingabefeldes per HTTP Request an den Server schickst, er dort überprüft wird und ein true der false zurück gibt, welches du dann mit JS weiter verarbeitest.

    1. sorry habe was vergessen:

      es gibt auch noch die Möglichkeit, dass du den Inhalt des Eingabefeldes per HTTP Request an den Server schickst, er dort überprüft wird und ein true der false zurück gibt, welches du dann mit JS weiter verarbeitest.

      Vielen Dank für die schnelle Antwort.
      Captcha soll ja auch nicht als Dauerlösung genutzt werden.
      Hab mich auch schon nach anderenLösungen umgeschaut.

      Es gibt doch auch so eine Art Zeitprüfung? Heißt... Sobald jemand Kontaktseite aufmacht fängt eine Zeitprüfung an. Wird der Formular z.B. in weniger wie 10 sekunden ausgefüllt erscheint eine Fehlermeldung. Habe schon danach gegooglelt, aber leider noch nichts brauchbares gefunden.

      Kennt da jemand evtl. was?

  3. @@Spider:

    nuqneH

    Das hier ist mein PHP mit dem ich Captcha erzeuge.

    Welchen Sinn soll ein CAPTCHA haben außer Nutzer zum Abbruch der Interaktion und zum Verlassen der Website zu bewegen?

    Für sehr, sehr wenig Geld bekommt man jedes CAPTCHA geknackt.

    Qapla'

    -- Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. @@Spider:

      nuqneH

      Das hier ist mein PHP mit dem ich Captcha erzeuge.

      Welchen Sinn soll ein CAPTCHA haben außer Nutzer zum Abbruch der Interaktion und zum Verlassen der Website zu bewegen?

      Für sehr, sehr wenig Geld bekommt man jedes CAPTCHA geknackt.

      Qapla'

      Ganz ehrlich...
      Was hat man davon, Fragen zu beantworten, die keinem weiter helfen?
      Und wenn man nicht weiter helfen kann oder möchte, dann doch lieber gar nichts schreiben! Nur so als Tip nebenbei.

      1. Tach!

        Was hat man davon, Fragen zu beantworten, die keinem weiter helfen?

        Nun, das war eine rhetorische Frage. Sie sollte dich zum Verzicht auf Captchas anregen, weil sie viel mehr Besucher nerven als Unerwünschte abzuhalten.

        Und wenn man nicht weiter helfen kann oder möchte, dann doch lieber gar nichts schreiben! Nur so als Tip nebenbei.

        Der Tipp kam hier schon so oft, und üblicherweise ist er der Tipp-Geber, der einen entscheidenden Aspekt seines Problems übersehen hat oder nicht wahrhaben will, der sich zwar nicht direkt auf die gestellte Frage bezieht, trotzdem aber zur Lösung oder einer entscheidenden Verbesserung des Gesamtsystems beitragen kann.

        dedlfix.

      2. @@Spider:

        nuqneH

        Was hat man davon, Fragen zu beantworten, die keinem weiter helfen?

        Der Hinweis, auf CAPTCHAs zu verzichten, weil sie unsinnig sind, war wohl die beste Hilfe, die du bekommen konntest. Du musst sie nur annehmen.

        Und wenn man nicht weiter helfen kann oder möchte, dann doch lieber gar nichts schreiben!

        Wenn man sich nicht weiter helfen lassen kann oder möchte, dann doch lieber gar nichts fragen!

        Qapla'

        -- Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
        1. Der Hinweis, auf CAPTCHAs zu verzichten, weil sie unsinnig sind, war wohl die beste Hilfe, die du bekommen konntest. Du musst sie nur annehmen.

          ist keine Hilfe. Wenn man schon sich die Mühe gibt, dann bitte einen konkreten Vorschlag wie es besser geht. Jemandem ein Hinweis zu geben wie es nicht geht, ist und kann auch keine Hilfe sein. Das weiß der jenige schon von alleine, sonst würde man ja keine Fragen stellen. ;-)

          Wenn man sich nicht weiter helfen lassen kann oder möchte, dann doch lieber gar nichts fragen!

          Wenn man sich schlauer als alle anderen hält, ist hier nicht das richtige Platz. Nur für die Zukunft, (man sollte ja einander weiter helfen...) wenn man wirklich weiter helfen möchte, dann:
          - entweder einen Verbesserungsvorschlag
          - oder einen Hinweis wie es besser funktionieren könnte.
          - Wenn man nicht weiß, wie es besser geht, am besten gar nicht antworten.

          Tipps "wie es nicht geht" HELFEN NICHT WEITER!!! Davon gibts schon genug.
          Würde mir mal darüber ernsthaft mal Gedanken machen.

          1. @@Spider:

            nuqneH

            Wenn man schon sich die Mühe gibt, dann bitte einen konkreten Vorschlag wie es besser geht.

            Kein CAPTCHA verwenden.

            • entweder einen Verbesserungsvorschlag

            Kein CAPTCHA verwenden.

            • oder einen Hinweis wie es besser funktionieren könnte.

            Wo ist der Unterschied zum vorigen Punkt?

            Egal. Die Antwort ist: Kein CAPTCHA verwenden.

            • Wenn man nicht weiß, wie es besser geht, am besten gar nicht antworten.

            Wenn man weiß, wie es besser geht (oder glaubt, es zu tun), am besten gar nicht fragen.

            Würde mir mal darüber ernsthaft mal Gedanken machen.

            Mach mal.

            Qapla'

            -- Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
            (Mark Twain)
            1. und manche werden es nie lernen :-D

          2. Om nah hoo pez nyeetz, Spider!

            Tipps "wie es nicht geht" HELFEN NICHT WEITER!!! Davon gibts schon genug.
            Würde mir mal darüber ernsthaft mal Gedanken machen.

            Das würde ich an deiner Stelle auch tun. Ein Captcha ist keine gute Idee. Deshalb hast du bestimmt schon ganz oft "[Captchas - d. Red.] HELFEN NICHT WEITER!!!" gelesen. Schau dir für wirkungsvollere Alternativen beispeilsweise diesen aktuellen Thread an.

            Matthias

            -- 1/z ist kein Blatt Papier.
            1. Moin

              Das würde ich an deiner Stelle auch tun. Ein Captcha ist keine gute Idee.
              Matthias

              Hab mich ein wenig durchgelesen und mein Formular vorerst auf versteckte Eigabefelder via CSS umgestellt. Als Falle für spambots.

              Noch ist ist die Seite wenig bekannt, also das am Anfang, denke ich ausreichen...

              Eine Frage habe ich aber trotzdem...
              Hier sind ja, so wie ich mich durchgelesen habe, ein paar Leute, die richtig was drauf haben...
              Also meine Frage wäre...
              Wenn Captchas so schlecht sind, warum greifen viele große Unternehmen, wie z.B. auch Telekom, immer noch auf Captcha-Prüfung zurück? Die haben doch sicherlich auch ein paar gute Programmierer im Haus...?

              1. @@Spider:

                nuqneH

                Wenn Captchas so schlecht sind, warum greifen viele große Unternehmen, wie z.B. auch Telekom, immer noch auf Captcha-Prüfung zurück?

                Da fallen mir zwei Begründungen ein:
                • Ha’m wa immer schon so gemacht.
                • Machen andere auch so.

                Zusammen mit
                • Ha’m wa noch nie so gemacht.
                • Machen andere auch nicht.
                ganz oben auf der Liste der unsinnigsten Begründungen für irgendwas.

                Die haben doch sicherlich auch ein paar gute Programmierer im Haus...?

                • Programmierer haben nicht das Sagen.
                • Die, die das Sagen haben, sind beratungsresistent.

                Qapla'

                PS: Freut mich, dass du deine Beratungsresistenz doch noch abgelegt hast.

                -- Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                (Mark Twain)

                Folgende Nachrichten verweisen auf diesen Beitrag:

                1. nuqneH
                  PS: Freut mich, dass du deine Beratungsresistenz doch noch abgelegt hast.

                  Na ja, erstens schein das ja ne recht effektive Methode zu sein.
                  Und zweitens, konnte ich das relativ zügig in die Tat umsetzen, sogar mit meinen geringen Programmierkenntnissen. Der Weg des geringsten Widerstandes. :-)

                  Aber mal was anderes...

                  Ich möchte zwei Funktionen bzw. Ergebnisse erreichen, folgendes

                        <tr>
                         <td><label id="Telefon_Text" for="Formular_Telefon">Telefon</label></td>
                         <td><p class="Formular-Checkboxen_Tabelle"><input class="Formular-Eingabefeld" type="text" id="Formular_Telefon" name="Telefon" maxlength="50"></p></td>
                        </tr>
                        <tr>
                         <td><label class="Formular-Standarttext" id="erreichbar_Text">Telefonisch</label></td>
                         <td colspan="6">
                          <p class="Formular-Standarttext">am besten erreichbar zwischen
                           <select onfocus="javascript:erreichbar();" id="Formular_erreichbar_von" name="erreichbar_von">
                            <option value="07:00 Uhr">07:00 Uhr</option>
                            <option value="08:00 Uhr">08:00 Uhr</option>
                           </select>
                            und
                           <select id="Formular_erreichbar_bis" name="erreichbar_bis">
                            <option value="08:00 Uhr">08:00 Uhr</option>
                            <option value="09:00 Uhr">09:00 Uhr</option>
                           </select>
                          </p>
                         </td>
                        </tr>

                  Funktion Nr.1

                  Ich möchte, dass beiden <select> Felder so lange disabled bleiben, bis der Besucher einen Wert (eine Telefonnummer) in das Feld name="Telefon" eingibt.

                  das habe ich probiert so zu lösen

                  function erreichbar() {
                  if (document.Kontakt_Formular.Formular_Telefon.value == '') {
                  document.Kontakt_Formular.Formular_erreichbar_von.disabled = true;
                    } else {
                  document.Kontakt_Formular.Formular_erreichbar_von.disabled = false;
                  }

                  funktioniert aber leider nicht. Ich weiß, dass so lange nichts passiert, das Feld auch nicht deaktiviert werden kann, aber ich weiß nicht, wie ich diese Problem lösen kann.

                  Funktion Nr. 2
                  wenn der Benutzer z.B. im Feld name="erreichbar_von" 9:00 auswählt, möchte ich, dass im Feld name="erreichbar_bis" mindestens ein Wert höher automatisch eingestellt wird, also 10:00. Und am besten die Werte darunter auf disabled gesetzt werden.

                  Würde mich Vorschläge, die bei meinem Problem "weiter Helfen" sehr freuen...

                  1. Hallo,

                          <tr>
                           <td><label id="Telefon_Text" for="Formular_Telefon">Telefon</label></td>
                           <td><p class="Formular-Checkboxen_Tabelle"><input class="Formular-Eingabefeld" type="text" id="Formular_Telefon" name="Telefon" maxlength="50"></p></td>
                          </tr>
                          <tr>
                           <td><label class="Formular-Standarttext" id="erreichbar_Text">Telefonisch</label></td>
                           <td colspan="6">
                            <p class="Formular-Standarttext">am besten erreichbar zwischen
                             <select onfocus="javascript:erreichbar();" id="Formular_erreichbar_von" name="erreichbar_von">
                              <option value="07:00 Uhr">07:00 Uhr</option>
                              <option value="08:00 Uhr">08:00 Uhr</option>
                             </select>
                              und
                             <select id="Formular_erreichbar_bis" name="erreichbar_bis">
                              <option value="08:00 Uhr">08:00 Uhr</option>
                              <option value="09:00 Uhr">09:00 Uhr</option>
                             </select>
                            </p>
                           </td>
                          </tr>

                    bevor ich auf die Fragen eingehe:
                    1. Den wiederholt auftretenden Rechtschreibfehler möchtest du noch korrigieren, oder?
                    2. Das Label "javascript:" in einem Eventhandler ist völlig zweckfrei und ohne Aufpreis auch
                       entnehmbar (frei nach Loriot).
                    3. Gibt es einen Grund, zusätzlich zum name-Attribut ein gleichlautendes id-Attribut zu vergeben?

                    Ich möchte, dass beiden <select> Felder so lange disabled bleiben, bis der Besucher einen Wert (eine Telefonnummer) in das Feld name="Telefon" eingibt.

                    das habe ich probiert so zu lösen

                    function erreichbar() {
                    if (document.Kontakt_Formular.Formular_Telefon.value == '') {
                    document.Kontakt_Formular.Formular_erreichbar_von.disabled = true;
                      } else {
                    document.Kontakt_Formular.Formular_erreichbar_von.disabled = false;
                    }

                    Die Funktion könnte wesentlich einfacher und damit automatisch leichter lesbar formuliert sein:

                       document.Kontakt_Formular.Formular_erreichbar_von.disabled = (document.Kontakt_Formular.Formular_Telefon.value=='');

                    funktioniert aber leider nicht. Ich weiß, dass so lange nichts passiert, das Feld auch nicht deaktiviert werden kann, aber ich weiß nicht, wie ich diese Problem lösen kann.

                    Du musst natürlich dafür sorgen, dass diese Funktion auch immer aufgerufen wird, wenn sich der Inhalt des Textfelds ändert. Der onchange-Eventhandler wäre eine Möglichkeit, der onkeypress-Handler eine weitere.

                    wenn der Benutzer z.B. im Feld name="erreichbar_von" 9:00 auswählt, möchte ich, dass im Feld name="erreichbar_bis" mindestens ein Wert höher automatisch eingestellt wird, also 10:00. Und am besten die Werte darunter auf disabled gesetzt werden.

                    Das bekommst du sicher nicht über ein schematisches Vorgehen, weil dazu die Textinhalte der select-Elemente interpretiert werden müssten.

                    So long,
                     Martin

                    --
                    Computer lösen für uns Probleme, die wir ohne sie gar nicht hätten.
                    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(

                      1. Den wiederholt auftretenden Rechtschreibfehler möchtest du noch korrigieren, oder?

                      dass sich mal ein Fehler einschleicht, ist denke ich, nicht so wild. Aber "wiederholt auftretenden"...? Bitte um Hinweis, möchte ja nicht dumm sterben.

                      1. Gibt es einen Grund, zusätzlich zum name-Attribut ein gleichlautendes id-Attribut zu vergeben?

                      Ich dachte, das sollte man vermeiden. Also habe ich mich stets bemüht einen anderen Namen zuzuweisen. Also, gut zu wissen und weniger Arbeit.

                      Die Funktion könnte wesentlich einfacher und damit automatisch leichter lesbar formuliert sein:

                         document.Kontakt_Formular.Formular_erreichbar_von.disabled = (document.Kontakt_Formular.Formular_Telefon.value=='');

                      Du musst natürlich dafür sorgen, dass diese Funktion auch immer aufgerufen wird, wenn sich der Inhalt des Textfelds ändert. Der onchange-Eventhandler wäre eine Möglichkeit, der onkeypress-Handler eine weitere.

                      Funktioniert leider nicht, habe mit beiden Eventhandlern probiert.

                      Das bekommst du sicher nicht über ein schematisches Vorgehen, weil dazu die Textinhalte der select-Elemente interpretiert werden müssten.

                      Habe das hier im SELFHTML gefunden

                      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                            "http://www.w3.org/TR/html4/strict.dtd">
                      <html>
                      <head>
                      <title>Absendewert von Einträgen bestimmen</title>
                      </head>
                      <body>

                      <h1>Pizzeria Fantasia</h1>

                      <form action="select.htm">
                        <p>Ihre Pizza-Bestellung:</p>
                        <p>
                          <select name="Pizza" size="5"

                      onchange="alert(this.form.Pizza.options[this.form.Pizza.selectedIndex].value)">
                            <option value="P101">Pizza Napoli</option>
                            <option value="P102">Pizza Funghi</option>
                            <option value="P103">Pizza Mare</option>
                            <option value="P104">Pizza Tonno</option>
                            <option value="P105">Pizza Mexicana</option>
                            <option value="P106">Pizza Regina</option>
                            <option value="P107">Pizza de la Casa</option>
                            <option value="P108">Pizza Calzone</option>
                            <option value="P109">Pizza con tutti</option>
                          </select>
                         </p>
                      </form>

                      </body>
                      </html>

                      Ist das mein Lösungsansatz?

                      1. Hallo,

                        1. Den wiederholt auftretenden Rechtschreibfehler möchtest du noch korrigieren, oder?

                        dass sich mal ein Fehler einschleicht, ist denke ich, nicht so wild. Aber "wiederholt auftretenden"...? Bitte um Hinweis, möchte ja nicht dumm sterben.

                        der Klassiker: "Standart" mit t am Schluss. Tut immer wieder weh beim Lesen.

                        1. Gibt es einen Grund, zusätzlich zum name-Attribut ein gleichlautendes id-Attribut zu vergeben?

                        Ich dachte, das sollte man vermeiden. Also habe ich mich stets bemüht einen anderen Namen zuzuweisen. Also, gut zu wissen und weniger Arbeit.

                        Ja. Wenn du das id-Attribut nicht aus anderen Gründen brauchst oder für sinnvoll hältst, lass es weg. Für die Formularverarbeitung ist es nicht notwendig, da ist vor allem das name-Attribut wichtig.

                        Du musst natürlich dafür sorgen, dass diese Funktion auch immer aufgerufen wird, wenn sich der Inhalt des Textfelds ändert. Der onchange-Eventhandler wäre eine Möglichkeit, der onkeypress-Handler eine weitere.

                        Funktioniert leider nicht, habe mit beiden Eventhandlern probiert.

                        Kann ich mir nicht vorstellen. Zeig mal! :-)

                        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                              "http://www.w3.org/TR/html4/strict.dtd">
                        <html>
                        <head>
                        <title>Absendewert von Einträgen bestimmen</title>
                        </head>
                        <body>

                        <h1>Pizzeria Fantasia</h1>

                        <form action="select.htm">
                          <p>Ihre Pizza-Bestellung:</p>
                          <p>
                            <select name="Pizza" size="5"

                        onchange="alert(this.form.Pizza.options[this.form.Pizza.selectedIndex].value)">
                              <option value="P101">Pizza Napoli</option>
                              <option value="P102">Pizza Funghi</option>
                              <option value="P103">Pizza Mare</option>
                              <option value="P104">Pizza Tonno</option>
                              <option value="P105">Pizza Mexicana</option>
                              <option value="P106">Pizza Regina</option>
                              <option value="P107">Pizza de la Casa</option>
                              <option value="P108">Pizza Calzone</option>
                              <option value="P109">Pizza con tutti</option>
                            </select>
                           </p>
                        </form>

                        </body>
                        </html>

                        Ist das mein Lösungsansatz?

                        Nein. Du willst doch auf Änderungen in einem Textfeld reagieren, nicht in einer Auswahlliste. Das Beispiel hat mit deinem Anwendungsfall nur so viel gemeinsam, dass es überhaupt einen onchange-Handler nutzt.

                        So long,
                         Martin

                        --
                        Niemand ist überflüssig: Er kann immer noch als schlechtes Beispiel dienen.
                        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(

                        1. der Klassiker: "Standart" mit t am Schluss. Tut immer wieder weh beim Lesen.

                          Hab ich nie darauf geachtet. Danke. Aber wenn es sich um Klassiker handelt, dann war ich wohl nicht der erste, und werde sicherlich nicht der letzte gewesen sein.

                          Kann ich mir nicht vorstellen. Zeig mal! :-)

                          Hier

                          Script habe ich ausgelagert, sieht so aus

                          <!-- hier wird ein Script für "Telefonisch erreichbar" sichtbar-unsichtbar erstellt -->
                          function erreichbar() {
                          document.Kontakt_Formular.erreichbar_von.disabled = (document.Kontakt_Formular.Formular_Telefon.value=='');
                          }

                          Nein. Du willst doch auf Änderungen in einem Textfeld reagieren, nicht in einer Auswahlliste. Das Beispiel hat mit deinem Anwendungsfall nur so viel gemeinsam, dass es überhaupt einen onchange-Handler nutzt.

                          Nein, genau das möchte ich.

                          Eine Auswahlliste soll andere beeinflussen. Wenn Auswahl1 8:00 gewählt soll Auswahl2 9:00 zeigen.
                          Und wenn Telefon nicht eingetragen wird, sollen ebenb beide ausgeblendet werden.

                          1. Hallo,

                            der Klassiker: "Standart" mit t am Schluss. Tut immer wieder weh beim Lesen.

                            Hab ich nie darauf geachtet. Danke. Aber wenn es sich um Klassiker handelt, dann war ich wohl nicht der erste, und werde sicherlich nicht der letzte gewesen sein.

                            das ist wohl wahr ...

                            Hier

                            Okay, mal sehen.

                            Du willst doch auf Änderungen in einem Textfeld reagieren, nicht in einer Auswahlliste. Das Beispiel hat mit deinem Anwendungsfall nur so viel gemeinsam, dass es überhaupt einen onchange-Handler nutzt.

                            Nein, genau das möchte ich.
                            Eine Auswahlliste soll andere beeinflussen. Wenn Auswahl1 8:00 gewählt soll Auswahl2 9:00 zeigen.
                            Und wenn Telefon nicht eingetragen wird, sollen ebenb beide ausgeblendet werden.

                            Ach so. Das passt aber mit der obigen Funktion nicht zusammen, die auf Änderungen eines Textfeldes überprüft - bzw. die ist dann nur ein Teil des gewünschten Verhaltens, nämlich das Deaktivieren der Liste(n), wenn das Textfeld leer ist. Um auf die Auswahl eines Listeneintrags zu reagieren, ist nämlich onselect der richtige Eventhandler. Ich bin mir nicht sicher, ob Listen überhaupt onchange unterstützen; onkeypress jedenfalls nicht.
                            Und das Textfeld "Telefon" hat überhaupt keinen Eventhandler. Kein Wunder, dass nichts passiert, wenn man da etwas einträgt (oder auch nicht).

                            So long,
                             Martin

                            --
                            F: Was ist ekliger als ein angebissener Apfel mit einem Wurm drin?
                            A: Ein angebissener Apfel mit einem halben Wurm.
                            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(

                            1. Und das Textfeld "Telefon" hat überhaupt keinen Eventhandler. Kein Wunder, dass nichts passiert, wenn man da etwas einträgt (oder auch nicht).

                              Blöder Fehler! Ne, ne, ne. Hab Eventhandler falsch plaziert. So jetzt passt, aber... Beim ersten Buchstaben witd das Feld deaktiviert und bei allen weiteren aktiviert. Die Felder müssen aber von Anfang an deaktiviert sein und beim eintragen des Telefonnummers aktiviert werden...

                              Jetzt habe ich folgendes gemacht. Das Auswahlfeld hab ich gleich auf disabled gesetzt. Ab der zweiten Angabe (Zahl, Buchstabe) wird Auswahlfeld auf "sichtbar" gesetzt. Nur wenn ich die Nummer lösche, wird das Auswahlfeld nicht wieder auf disabled. Muss ich dafür auch eine Funktion schreiben?

                            2. Martin

                              Wollte mich noch mal für die Hilfe bedanken. Hat alles wunderbar funktioniert.

                              MfG

    2. @@Gunnar Bittersmann:

      nuqneH

      Welchen Sinn soll ein CAPTCHA haben außer Nutzer zum Abbruch der Interaktion und zum Verlassen der Website zu bewegen?

      „Captchas werden übrigens einmal als Beginn des Krieges zwischen Mensch und Maschine gelten.“ [@spielbeobachter]

      Qapla'

      -- Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
      (Mark Twain)
  4. Tach!

          function make_seed(){
             list($usec , $sec) = explode (' ', microtime());
             return (float) $sec + ((float) $usec * 100000);
          }
          srand(make_seed());

    Diese Zeilen kannst du ersatzlos streichen. Zum einen lässt sich microtime() schon seit Äonen mit einem true aufrufen, woraufhin es einen ordentlichen Wert zurückgibt. Zum anderen braucht der Zufallszahlengenerator nicht initialisiert zu werden, schon gar nicht mit einem relativ leicht zu erratenden Wert wie der aktuellen Uhrzeit.

    Mein Problem ist... Der vergleich finden zwar statt, aber der Wert aus dem Catchafeld (id="Bild_Captcha") wird nicht richtig ausgewertet.

    Definiere "nicht richtig"! Was erwartest du, was erhältst du? Und schau bitte genau nach, bis hinunter zu den Werten in den Variablen (sprich: Kontrollausgaben - am besten mit var_dump()).

    dedlfix.

    1. Moin

      Diese Zeilen kannst du ersatzlos streichen.

      Hab mir schon gedacht, dass ein paar Zeilen wegfahlen können. Ist auch auf PHP geschrieben worden. Deswegen auch die Frage hier.

      Definiere "nicht richtig"!

      Na ja. Bild kann Javascript ja nicht auswerten. Also muss ich den Wert aus dem Captchafeld irgend wie auswerten... Und da hab ich eben keine Ahnung wie.

      1. Tach!

        Na ja. Bild kann Javascript ja nicht auswerten. Also muss ich den Wert aus dem Captchafeld irgend wie auswerten... Und da hab ich eben keine Ahnung wie.

        Mit Javascript? Beim Client? Du willst den Wert des Captchas beim Client mit der Eingabe vergleichen? Dann kannst du den Wert auch gleich im Klartext auf die Webseite schreiben. Javascript ist für eine Captcha-Auswertung gänzlich ungeeignet. Der Klartextwert muss beim Server verbleiben und die Richtigkeit auch dort kontrolliert werden. Auch ein verschlüsselt übertragener Wert, der per Javascript entschlüsselt werden soll, ist nicht besser. Auch da kann der Client - er muss es sogar - den Klartextwert ermitteln.

        dedlfix.