Informática Numaboa
Criando um CAPTCHA em PHP
Qua 17 Set 2008 20:51 |
- Detalhes
- Categoria: PHP
- Atualização: Sexta, 04 Maio 2012 17:06
- Autor: vovó Vicki
- Acessos: 34003
CAPTCHA vem de Completely Automated Public Turing test to tell Computers and Humans Apart, ou seja, um teste para diferenciar humanos de computadores. Se você não sabe o que é um CAPTCHA, leia O que é CAPTCHA. Se você sabe o que vem a ser um CAPTCHA e quer aprender a criá-los em PHP, então este é o tutorial
1. A imagem de fundo
Isto não tem nada a ver com a linguagem PHP, mas é uma etapa obrigatória. Afinal de contas, todo CAPTCHA que se preze tem uma imagem de fundo. Não é para ser uma imagem toda bonitinha porque, quanto mais "bagunçado" o fundo, melhor e mais seguro será o CAPTCHA. Você pode criar uma imagem em qualquer editor gráfico ou copiar esta daqui da mesma forma que a copiei do Code.box.sk...
Seja qual for a imagem que você escolher, salve-a no formato png e dê-lhe o nome de captcha.png. Esta imagem de fundo vai ser carregada usando a função do PHP imagecreatefrompng( ):
Você pode usar outros formatos de imagem, como gif ou jpg. Se for este o caso, a função chamadora precisa corresponder ao tipo de imagem (imagecreatefromgif, imagecreatefromjpeg, etc).
2. O texto do CAPTCHA
Para carregar um texto na imagem de fundo será preciso acionar a função PHP imageloadfont( ). O parâmetro desta função é o nome da fonte. As fontes TTF (true type) costumam dar problemas, então nem pensar. O PHP parece gostar apenas de fontes GD. Será que você vai parar por aqui porque não tem fontes do tipo GD? Nem pensar!
Procure algumas fontes GD na net ou na seção de downloads aqui da Aldeia, ou ainda escolha uma fonte TTF qualquer que esteja na sua máquina e use o WFtoPF para transformá-la em GD. Tá feito o jogo!
3. String randômica
Depois de criar a imagem de fundo e carregar a fonte, chegou a hora de gerar uma string única como texto do CAPTCHA. Para isto podemos usar a função MD5 do PHP:
A função uniqid( ) gera uma string única. Esta é transformada num hash MD5 (se você não sabe o que é isto, dê uma procurada na seção de Criptografia da Aldeia para se informar). Depois disto, retiramos os últimos 9 caracteres do hash com a função substr( ) do PHP. Este exemplo usa 9 caracteres, mas você pode optar por quantos quiser.
Esta string precisa ser armazenada de alguma forma para que possa ser comparada posteriormente com a que o usuário fornecer. Você pode armazená-la numa variável session, num cookie ou na sua base de dados. A escolha é sua.
Para colocar a string na imagem de fundo usamos a função imagestring( ).
4. Mostrando a imagem
A função para mostrar a imagem no formato PNG é imagepng( ). A forma de colocar a imagem na página é muito simples - basta chamar uma imagem dando como fonte o script php:
Coloque o script, a imagem de fundo e a fonte num mesmo diretório e faça a chamada. O resultado é o seguinte:
O script captcha.php
Fonte
Artigo de human publicado no code.box.