Captcha simples em PHP/GD

Captcha é um teste de desafio cognitivo completamente automatizado para diferenciação entre computadores e humanos. Um captcha usual envolve um computador que pede que um usuário termine um teste. Como os computadores são incapazes de resolver o captcha, todo usuário que incorpora uma solução correta é presumidamente humano.

Completely Automated Public Turing test to tell Computers and Humans Apart

O captcha que estamos acostumados a ver consiste na identificação de letras e números em uma imagem ligeiramente distorcida.

SmartCaptcha

É um captcha desenvolvido em PHP/GD que usa apenas letras e cores para formular perguntas:

  • Quais letras são vogais?
  • Quais letras são consoantes?
  • Quais letras são “x cor”?

smart captcha example

Para utilizar este captcha você vai precisar do PHP, biblioteca GD e suporte a sessão/cookie.

Como usar

Em um arquivo, o que irá gerar a imagem copie e cole o código:

<?php

// image.php

require 'SmartCaptcha.php';

// inicia a sessão
session_start();

// cria um novo captcha
$captcha = new SmartCaptcha;

// armazena a resposta na sessão
$_SESSION['answer'] = $captcha->create();

// exibe a imagem
$captcha->output();

?>

Ao acessar esse arquivo você deve ver uma imagem, como a acima. Cada acesso deve gerar uma nova imagem.

Em outro arquivo crie um formulário HTML:

<form action="submit.php" method="post">
    ...
    <img src="image.php" alt="Captcha">
    <input type="text" name="captcha" placeholder="Resposta">
    ...
</form>

E no último arquivo, o que recebe os dados do formulário, verifique a resposta do captcha:

<?php

// reabre a sessão
session_start();

if (strcasecmp($_POST['captcha'], $_SESSION['answer']) === 0) {
    // ok
}
else {
    // not ok
}

?>

Você pode adicionar um botão para gerar uma nova imagem desafio em seu formulário. Vai ser necessário um Javascript para atualizar a imagem, seja modificando o atributo src, acrescentando algum parâmetro para forçar uma nova requisição ou recriando a tag img.

SmartCaptcha é um projeto open-source. Você encontra o código fonte no GitHub. Sinta-se a vontade para fazer qualquer colaboração ou consideração.

https://github.com/Moraga/SmartCaptcha

You may also like...