Ir para o conteúdo

Pequeno CAPTCHA textual com operações matemáticas

É cada vez mais comum vermos CAPTCHAs com imagens para que os bots não consigam realizar certas acções que apenas um humano consegue. Por exemplo, um humano reconhece as letras numa imagem mas os bots não. Mas há um problema: muitas vezes as letras serem imperceptíveis mesmo para nós, ficando na dúvida e errando. Por isso existe uma alternativa: usar pequenas operações matemáticas fáceis de se realizar mentalmente. Aqui está o exemplo de um.

Código

<?php
session_start();

if($_GET['ois'] != $_SESSION['spam_verify']) echo "Voc&ecirc; &eacute; um bot!<br />n";
else echo "Voc&ecirc; &eacute; um humano!<br />n";

$ops = array('+', '-', '*');
$exp = rand(1, 10);
for($i = rand(2, 3); $i > 1; $i--)
    $exp .= $ops[rand(0, 2)].rand(1, 10);

$_SESSION['spam_verify'] = eval("return $exp;");

echo $exp;
?> = ? <br />
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="GET">
<input type="text" name="ois" />
</form>

Importante: Nota: Este sistema é para ser tomado apenas como um proof of concept.