Angular, AWS und Symfony Freelancer

PHP Rechen Captcha – Addieren und Subtrahieren

Ein Rechen-Captcha zu programmieren mit einfachen Rechenaufgaben ist erstaunlich einfach, es braucht nur 2 kleine Funktionen und schon kann man den User munter seine Mathematik-Kenntnisse testen lassen:

Features:

  • Addition
  • Subtraktion
  • Zahlen von 1 bis 13
  • sichere Zufallszahlen

Der Code lässt sich beliebig erweitern: Eine Möglichkeit der Sicherung wäre: Man benutzt deutsche Akzente für die Wörter im $words-Array, wie eens, zwee, dree usw…, damit würde man es den Spam-Bots noch schwieriger machen.

Beispiel Rechenaufgaben:

drei + vier = ?

zehn – vier = ?

Der Code

session_start();

function getCaptureCalculationText()
{
    $num = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13);
    $words = array("eins", "zwei", "drei", "vier", "fünf", "sechs", "sieben", "acht", "neun", "zehn", "elf", "zwölf", "dreizehn");
    mt_srand((double)microtime() * 1000000);
    $first = mt_rand(0, 12);
    $second = mt_rand(0, 12);
    if (mt_rand(0, 1) == 0 || $first < $second) {
        //addieren
        $ergebnis = $num[$first] + $num[$second];
        $showcode = $words[$first] . " + " . $words[$second] . " = ";

    } else {
        //subtrahieren
        $ergebnis = $num[$first] - $num[$second];
        $showcode = $words[$first] . " - " . $words[$second] . " = ";

    }
    $_SESSION['myCalculationCapture'] = $ergebnis;
    return $showcode;
}

function isCorrectUserInputCapture($userInput)
{
    return $_SESSION['myCalculationCapture'] == $userInput;
}

Beispiel-Code:

Achtung, wichtig ist, dass die Funktion getCaptureCalculationText() nach der Funktion isCorrectUserInputCapture() aufgerufen wird.

<?php 
   if (!isCorrectUserInputCapture($_POST['special_message'])) {
        $formErrors['captcha'] = true;
    }
?>
<li>
    Anti Spam Quiz: <?php echo getCaptureCalculationText() ?>?
</li>
<li>
    <input type="text" name="special_message" id="special_message"
          kontakt-error" : "" ?>">
</li>

Posted

in

by

Tags:

Comments

3 Kommentare zu „PHP Rechen Captcha – Addieren und Subtrahieren“

  1. Avatar von Müller Dieter
    Müller Dieter

    Hallo ich bin der Dieter und du?

  2. Avatar von Peter Maier
    Peter Maier

    Ich bin der Peter

  3. Avatar von Hans Meier
    Hans Meier

    nicht schlecht

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert