Informática Numaboa
Um captcha simples pra caramba
Qui 18 Set 2008 20:56 |
- Detalhes
- Categoria: PHP
- Atualização: Sexta, 19 Setembro 2008 20:36
- Autor: vovó Vicki
- Acessos: 8470
Este é um pequeno tutorial de como criar um CAPTCHA em PHP que, como já diz o título, é simples pra caramba.
Este CAPTCHA pode ser integrado em qualquer página ou formulário, como também pode ser inserido em componentes e módulos Joomla. Para criar este CAPTCHA usaremos a linguagem PHP. Veja o código:
O resultado é o seguinte:
- Captcha apenas com dígitos:
- Captcha com letras e números:
O código
Na linha 11 foi usada a função mt_rand() para obter um número randômico na faixa de 10000 a 99999. Os cinco dígitos deste número, armazenado na variável $seccode, serão utilizados como texto do captcha.
As linhas de 13 a 18 estão bloqueadas e servem apenas para mostrar como obter um texto randômico constituído por letras e números. Utilize o da sua escolha, mas apenas um deles.
A seguir vamos criar uma imagem do tipo PNG. Na linha 21 informa-se que a página conterá um gráfico deste tipo indicando o header.
Na linha 22 criamos uma imagem com a função imagecreate(), cujos parâmetros são a largura e a altura da imagem em pixels. Caso esta função falhe, o script é abortado e a mensagem "Erro ao criar imagem" é mostrada. Esta imagem é como se fosse uma tela em branco à qual podemos adicionar linhas e caracteres e à qual também podemos atribuir propriedades de cor. As propriedades de cor são definidas com a função imagecolorallocate().
A primeira cor definida é a cor de fundo. Na linha 24 definimos esta cor em RGB de 255, 244 e 234 (a cor de fundo deste parágrafo).
A cor da fonte é laranja, definido com RGB 255, 128, 0.
A cor das linhas é salmão, RGB 255, 200, 150.
A cor das bordas é a mesma cor da fonte. Uma vez definidas as cores podemos começar a criar as linhas. Para criar as linhas verticais usamos um loop que chama a função imageline(). Estas linhas são desenhadas em intervalos de 10 pixels. Os parâmetros são: a tela da imagem que já foi criada ($im), início da linha ($x=10, 20, etc e y=0), o fim da linha ($x=10, 20, etc e y=50) e a cor da linha.
Na linha de código 38 desenhamos uma linha horizontal que passa bem no meio da imagem e nas linhas 41 a 44 desenhamos a borda.
Agora só falta colocar o texto no captcha. Isto é feito usando a função imagestring() com os parâmetros: nossa imagem $im, o tamanho da fonte (pode ir de 1 a 5), a posição x na área da imagem, a posição y na área da imagem e a cor.
Neste ponto a imagem está pronta. Para colocá-la na tela usamos a função imagepng() dando como parâmetro a imagem.
Como a imagem criada na memória já foi apresentada na tela, não há motivo para continuar guardada. É sempre bom liberar a memória com a função imagedestroy().
Finalmentes
É isto aí, pessoal, taí uma imagem "fabricada" via programação. Podemos guardar o texto do captcha usando o expediente da session ou de cookies se quisermos recuperá-lo para uma comparação posterior.
Espero que tenham gostado do tuto.
Abraço da vó