3630 registros
0 hoje
14 nesta semana
4 neste mês|
Qui 18 Set 2008 20:56 |
|
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: <?php /* Captcha * * Gera imagem do código * * 2007 Aldeia Numaboa * @author: Viktoria Tkotz, contato arroba numaboa.com.br * */ // Gerar números do código $seccode = mt_rand(10000, 99999); // Se quiser, o texto também pode conter letras /* $chars = "AB1CD2EF3GH4IJ5KL6MN7P8QR9STUVWXYZ"; $seccode = ""; for($i = 0; $i < 5; $i++) // $i < Número de caracteres $seccode .= $chars[mt_rand(0, 33)]; */ // Criar imagem header("Content-Type: image/png"); $im = imagecreate(60, 18) or die('Erro ao criar imagem!'); // imagecreate(LARG, ALTURA) $corfundo = imagecolorallocate($im, 255, 244, 234); // imagecolorallocate($im, R, G, B) Só mudar R,G,B! $corfonte = imagecolorallocate($im, 255, 128, 0); // imagecolorallocate($im, R, G, B) R,G,B! $corlinha = imagecolorallocate($im, 255, 200, 150); // imagecolorallocate($im, R, G, B) R,G,B! $corborda = imagecolorallocate($im, 255, 128, 0); // imagecolorallocate($im, R, G, B) R,G,B! // Linhas verticais for($x=10; $x <= 100; $x+=10) imageline($im, $x, 0, $x, 50, $corlinha); // Linha central imageline($im, 0, 9, 100, 9, $corlinha); // Borda imageline($im, 0, 0, 0, 50, $corborda); imageline($im, 0, 0, 100, 0, $corborda); imageline($im, 0, 17, 100, 17, $corborda); imageline($im, 59, 0, 59, 17, $corborda); imagestring($im, 5, 8, 1, $seccode, $corfonte); imagepng($im); imagedestroy($im); ?> O resultado é o seguinte:
O códigoNa 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ó |
| Última atualização ( Sex, 19.09.2008 20:36 ) |