David: Spamerschutz

Bastel gerade annem Spamschutz. Der spuckt immer ne Zufallszahl, die der dann mit der Zahl im anderem Kästchen vergleichen soll. Wenn man dann auf den Button klickt, schmeißst der mir wieder ne neue Zahl in den Raum. Wie könnte man das verhindern? und die zweite Frage wie kann ich über php einen value im html-textfeld setzen?
Bei Javascript gehts ja mit document.form.bla.value="";

<?php
 $zahlen = array();
 $code="";

for($i=0; $i<5; $i++) {
  $zahlen[$i]=rand(1,9);
 }
 for($j=0; $j<5; $j++) {
  $code=$code.$zahlen[$j];
 }

echo "<html>\n";
 echo "<head>\n";
 echo "</head>\n";
 echo "<body>\n";
 echo "<form name="formular" action="tester.php" method="post">\n";
 echo "<input type="text" name="code1" value=$code readonly><p>\n";
 echo "<input type="text" name="code2" value=""><p>\n";
 echo "<input type="submit" name="absenden" value="Los gehts">\n";
 echo "</form>";
 echo "</body>\n";
 echo "</html>\n";

if($_POST['absenden']) {
  $aktuellerCode=$_POST['code1'];
  $eingegebenerCode=$_POST['code2'];

if($aktuellerCode==$eingegebenerCode) {

}
  else {

}
 }
 else {
 }
?>

Gruß

  1. Hi!
    Ein Kontaktformular, in dem ich eine Zahl abtippen oder eine Rechenaufgabe lösen muss, veranlasst mich, es sofort zu verlassen.
    Wenn dem Author nichts intelligenteres einfällt zum Spamschutz, kann seine Homepage nicht interessant sein.
    Schönen Tag noch!

    1. ok danke, aber der schmießst mir die ganze zeit nen fehler raus in der Zeile 12, aber finde ihn einfach nicht. Es ist zum verrückt werden :d

      Gruß

      1. Frohes Fest David,

        ok danke, aber der schmießst mir die ganze zeit nen fehler raus in der Zeile 12, aber finde ihn einfach nicht. Es ist zum verrückt werden :d

        wie lautet denn die Fehlermeldung?

        LG
        Chris©

        1. Code+Meldung

          Bin gerade irgendwie in den Threads veruscht. MIST

          <?php
           $code='';
           $woerter= array('Sonne', 'Mond', 'Winter', 'Sommer', 'Gespenst', 'Geist', 'Stern', 'Blume', 'Himmel', 'Hemd', 'Krawatte', 'Tischler', 'Mathematiker', 'Physiker', 'Deutscher', 'Deutschland', 'Oesterreich', "Weltmeisterschaft', 'Weltuntergang');

          $zahl=rand(0,18);
           $code=$woerter[$zahl];

          echo "<html>\n";
           echo "<head>\n";
           echo "</head>\n";
           echo "<body>\n";
           echo "<form name='formular' action='tester.php' method='post'>\n";
           echo "<input type='text' name='code1' value='$code' readonly><p>\n";
           echo "<input type='text' name='code2' value=''><p>\n";
           echo "<input type='submit' name='absenden' value='Los gehts'>\n";
           echo "</form>";
           echo "</body>\n";
           echo "</html>\n";

          if($_POST['absenden']) {
            $aktuellerCode=$_POST['code1'];
            $eingegebenerCode=$_POST['code2'];

          if($aktuellerCode==$eingegebenerCode) {

          }
            else {

          }
           }
           else {
           }
          ?>

          Parse error: syntax error, unexpected '>' in C:\Programme\Apache Group\Apache2\htdocs\Neuer Ordner\bla.php on line 8

          1. Hallo,

            <?php
            $code='';
            $woerter= array('Sonne', 'Mond', 'Winter', 'Sommer', 'Gespenst', 'Geist', 'Stern', 'Blume', 'Himmel', 'Hemd', 'Krawatte', 'Tischler', 'Mathematiker', 'Physiker', 'Deutscher', 'Deutschland', 'Oesterreich', "Weltmeisterschaft', 'Weltuntergang');

            Parse error: syntax error, unexpected '>' in C:\Programme\Apache Group\Apache2\htdocs\Neuer Ordner\bla.php on line 8

            Der Fehler ist schon in Line 3  :-)

            LG
            Chris©

  2. Naja, du könntest die Zahl in einer Session-Variable speichern.
    Dafür musst du als aller erstes die Session mit session_start() starten.
    Dann funktionieren die Variablen wie andere superglobale Variablen.
    z.B:

      
    session_start();  
    $_SESSION['blabla'] = "test";  
    echo $_SESSION['blabla'];  
    
    

    Und diese Zeile hier:
     echo "<input type="text" name="code1" value=$code readonly><p>\n";
    müsste eigentlich
     echo "<input type="text" name="code1" value="$code" readonly><p>\n";
    lauten.

    ansonsten würde ich dir empfehlen über Userfreundliche Methoden nachzudenken.
    Zum Beispiel könntest du einer Textbox den Namen 'text' geben und eine id, die dann in einem externen Stylesheet als display:none deklariert wird.
    Dann die eigentliche Textbox mit einem abstrakten Namen.
    Beim Abschicken einfach prüfen ob in der für den User nicht sichtbaren Textbox etwas steht.

    Gruß
    Voodoo

    1. Hello,

      ansonsten würde ich dir empfehlen über Userfreundliche Methoden nachzudenken.
      Zum Beispiel könntest du einer Textbox den Namen 'text' geben und eine id, die dann in einem externen Stylesheet als display:none deklariert wird.

      Und wie geht es dann weiter?
      Was geschieht mit der "Textbox", wenn Du das Formular absendest?

      Harzliche Grüße aus dem
      verschneiten Sankt Andreasberg
      und Frohe Weihnachtszeit

      Tom

      --
      Nur selber lernen macht schlau

      1. Und wie geht es dann weiter?
        Was geschieht mit der "Textbox", wenn Du das Formular absendest?

        Naja, es wird überprüft, ob in der nicht sichtbaren Textarea trotzdem was drinsteht. In etwa so:

        Formular:

          
        <!-- Bla bla -->  
        <textarea name="text" id="form-text"></textarea>  
        <textarea name="asdf"></textarea>  
        
        

        Stylesheet:

          
        #form-text {  
        display:none;  
        }  
        
        

        Nach dem absenden:

          
        if(!empty($_POST['text']))  
        die("Böser Bot");  
        // Weitere verarbeitung mit $_POST['asdf']  
        
        

        Stellt natürlich nur eine Möglichkeit dar, funktioniert aber ganz gut.

        1. Hallo zusammen,
          ich finde, das Forum wird langweilig, wenn immer wieder die gleichen Fragen mit den gleichen Antworten autreten.
          Kann man nicht häufiger auf die vorhandenen ausführlichen Threads verweisen?
          (Auch wenn es Weihnacht ist!)
          Viele Grüße

          1. Frohe Weihnacht _allen_ Stammlesern,

            wie wäre es mit dem Aufbau eines Index, also nicht so global, wie die Suche, sondern gezielt zu Lösungen für eindeutige Suchworte. Die Suche ist nämnlich manchmal ganz schön nervig, wenn man nicht wenigstens einen Autor kennt.

            Kann man nicht häufiger auf die vorhandenen ausführlichen Threads verweisen?

            So ein Index würde dann einen Auszug aus dem Archiv bedeuten. Die besten 10 zu einer Frage, oder so.

            Ich habe nämlich eben dasselbe gedacht, bin in diesen Thread eigentlich auch nur reingeraten, weil er ungefähr das hätte beinhalten können, was ich gerade suche. Ich brauche bis morgen eine Gegenüberstellung

            HTML-Attribute    -    CSS-Pendant   -    JS-Eigenschaft

            Ich dachte, es gab hier mal sowas, aber ich finde es nicht.

            Hoffentlich liest es jetzt noch jemand. Sonst muss ich doch einen extra Thread aufmachen.

            LG
            Chris©

  3. Lieber David,

    mein GB-Script nutzt diverse Mechanismen, um SPAM zu verhindern.

    Ingo Turski hat auf seiner Website auch einen ausführlichen Artikel zu dieser Thematik verfasst. Sehr lesenswert!

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)