quarta-feira, 27 de julho de 2011

Dicas de Programação: Como criar um captcha em PHP?

Para criar um simples Captcha em PHP, basta usar a biblioteca GD. Veja como instalar e configurar no site do PHP:
http://www.php.net/manual/pt_BR/book.image.php

Depois de instalado e configurado, basta usar as funções imagecreate (cria um objeto "imagem"), imagecolorallocate (seta a cor do desenho), imagechar (desenha um caracter na imagem), imageline (desenha uma linha na imagem) e imagepng (cria a imagem do tipo png):

<?php
class Captcha {
var $img;
var $characters;
//Construtor da classe
function __construct() {
//Cria o "objeto" imagem
$this->img = imagecreate(80,20);
//Obtem 4 caracteres randomicos
for ($i = 0; $i < 4; $i++) {
$this->characters .= chr(rand(ord("A"), ord("Z")));
}
}

function draw() {
//Seta o content no header da "página" para imagem do tipo png
header('Content-type: image/png');
//Seta a cor de fundo da imagem em "branco"
$bg = imagecolorallocate($this->img, 255, 255, 255);
//Para cada caracter (um dos 4 caracteres)
for ($i = 0; $i < strlen($this->characters); $i++) {
//Seleciono uma cor randomica...
$color = imagecolorallocate($this->img, rand(0,255), rand(0,255), rand(0,255));
//Obtenho o caracter
$character = substr($this->characters, $i, 1);
//Desenho o caracter
imagechar($this->img, 5, (20 * $i), 0, $character, $color);
//Desenho uma linha em posicao randomica
imageline($this->img, rand(0,80),rand(0,20),rand(0,80),rand(0,20),$color);
}
//Crio a imagem
imagepng($this->img);
}
}
//Crio o objeto Captcha
$captcha = new Captcha();
//Crio a imagem
$captcha->draw();
?>

Acho que é isso... Não é o melhor captcha do mundo, mas funciona. :P

Até mais!

Nenhum comentário: