Captcha Simples com PHP

Nesse artigo irei mostrar como construir um sistema de CAPTCHA em PHP para formulários que irá ajudar a proteger contra ataque de spams.

Fique por dentro
Nesse artigo irei mostrar como construir um sistema de CAPTCHA em PHP para formulários que irá ajudar a proteger contra ataque de spams.

Iremos construir 3 arquivos PHP e precisaremos de um arquivo de fonte.

Vamos aos scripts:

<!-- No campo src da tag img abaixo enviaremos 4 parametros via GET l = largura da imagem a = altura da imagem tf = tamanho fonte das letras ql = quantidade de letras do captcha --> <img src="captcha.php?l=150&a=50&tf=20&ql=5"> <!-- O texto digitado no campo abaixo sera enviado via POST para o arquivo validar.php que ira vereficar se o que voce digitou é igual ao que foi gravado na sessao pelo captcha.php --> <form action="validar.php" name="form" method="post"> <input type="text" name="palavra" /> <input type="submit" value="Validar Captcha" /> </form>
Listagem 1. Arquivo index.php
<?php session_start(); // inicial a sessao header("Content-type: image/jpeg"); // define o tipo do arquivo function captcha($largura,$altura,$tamanho_fonte,$quantidade_letras){ $imagem = imagecreate($largura,$altura); // define a largura e a altura da imagem $fonte = "arial.ttf"; //voce deve ter essa ou outra fonte de sua preferencia em sua pasta $preto = imagecolorallocate($imagem,0,0,0); // define a cor preta $branco = imagecolorallocate($imagem,255,255,255); // define a cor branca // define a palavra conforme a quantidade de letras definidas no parametro $quantidade_letras $palavra = substr(str_shuffle("AaBbCcDdEeFfGgHhIiJjKkLlMmNnPpQq RrSsTtUuVvYyXxWwZz23456789"),0,($quantidade_letras)); $_SESSION["palavra"] = $palavra; // atribui para a sessao a palavra gerada for($i = 1; $i <= $quantidade_letras; $i++){ imagettftext($imagem,$tamanho_fonte,rand(-25,25),($tamanho_fonte*$i), ($tamanho_fonte + 10),$branco,$fonte,substr($palavra,($i-1),1)); // atribui as letras a imagem } imagejpeg($imagem); // gera a imagem imagedestroy($imagem); // limpa a imagem da memoria } $largura = $_GET["l"]; // recebe a largura $altura = $_GET["a"]; // recebe a altura $tamanho_fonte = $_GET["tf"]; // recebe o tamanho da fonte $quantidade_letras = $_GET["ql"]; // recebe a quantidade de letras que o captcha terá captcha($largura,$altura,$tamanho_fonte,$quantidade_letras); // executa a funcao captcha passando os parametros recebidos ?>
Listagem 2. Arquivo captcha.php
<?php session_start(); if ($_POST["palavra"] == $_SESSION["palavra"]){ echo "<h1>Voce Acertou</h1>"; }else{ echo "<h1>Voce nao acertou!</h1>"; echo "<a href="index.php">Retornar</a>"; } ?>
Listagem 3. Arquivo validar.php

Agora coloque o arquivo da fonte na pasta onde estão esses 3 arquivos. Caso você não utilize a arial.ttf modifique a variável $fonte no arquivo captcha.php.


Links Úteis


Saiba mais sobre PHP ;)

  • PHP Tutorial: Neste artigo apresentaremos dicas e um resumo geral de alguns dos principais artifícios da linguagem PHP.
  • Carreira Programador PHP: Neste guia de estudos você encontra os conteúdos que precisará para se tornar um programador PHP completo. Confira a sequência de cursos e exemplos que te guiarão do básico ao avançado em PHP.
  • Linguagem PHP: Neste Guia de Consulta você encontrará todo o conteúdo que precisa para aprender PHP, uma linguagem de programação amplamente utilizada para a construção de aplicações web.

Artigos relacionados