Pular para o conteúdo

Sydney Machado

(41) 99104-1422 – sydney@sydney.eti.br

  • Home
  • Álcool x Gasolina
  • Salários e Descontos
  • Sobre
  • Loja
  • Carrinho
  • Finalizar compra

Como criar um CAPTCHA em PHP

2 de abril de 202018 de outubro de 2011 Por Sydney

Esta é uma ferramenta que com o tempo, ficou muito importante nos sites, blogs, etc, para ter certeza que não são “máquinas” fazendo logins, cadastros, etc e principalmente, não são “máquinas” roubando dados, com bots, de seus domínios (chamaremos assim os sites, blogs, post sites, sistemas, etc).

Existe uma forma muito simples de criar, em seu domínio, seu próprio CAPTCHA em PHP.

Obvio que para isso, devemos ter o PHP rodando com a biblioteca GD habilitada.

Primeiramente, precisamos de uma imagem de fundo, aquelas bem confusas pra gerarmos as letras em cima.

Vamos usar esta:

Fundo do Captcha
Fundo do Captcha

Uma boa dica é dar uma voada no google e ver os fundos que tem por lá.

Outra forma, caso você tenha os dotes artísticos, cria a sua ou as suas nos editores gráficos do momento.

Usaremos uma com estrutura JPEG (JPG). Pode-se usar GIF, TIFF, PNG, BMP, mas a JPEG dá uma boa resolução e a ferramenta gráfica que utilizaremos, roda sem problema.

Para o próximo passo, dentro de seu preferido editor de PHP, vamos criar um arquivo novo, chamado captcha.php e iniciar seu conteúdo:


< ?php
$size_font=20;
$text=geraTexto(6);
session_start();
$_SESSION['CaptchaTEXT']=$text;

Nestas primeiras linhas, estou acertando umas variáveis que usarei lá na frente…

A função geraTexto(), já esta postada, você pode pegá-la aqui.

O detalhe de colocar o conteúdo do captcha em session é o que de melhor tem para proteger seu código.

Vamos ao objetivo agora:


header("Content-type: image/jpeg");

Estou dizendo que o resultado desta “página”, será uma imagem JPEG. Com isso o browser vai entender que é uma imagem mostrá-la de acordo com as regras impostas às imagens.


$im=imagecreatefromjpeg('bg_6.jpg');

A função imagecreatefromjpeg, que sua tradução fica literal com o uso, cria imagem a partir de um JPEG. Neste caso, você passa como parâmetro o arquivo de fundo.


$cor=null;
$cor[1]=array(1,1,1);
$cor[]=array(128,128,128);
$cor[]=array(255,255,255);
$cor[]=array(255, 0, 0);
$cor[]=array( 0,255, 0);
$cor[]=array( 0, 0,255);
$cor[]=array( 0,255,255);
$cor[]=array(255,255, 0);
$cor[]=array(255, 0,255);
$cor_escolhida=rand(1,count($cor));

Para ter uma “paleta de cores” e montar o texto mudando de cor, com esse código preparo as cores e escolho através de rand.


$letra=imagecolorallocate($im,$cor[$cor_escolhida][0],$cor[$cor_escolhida][1],$cor[$cor_escolhida][2]);

Agora eu coloco a cor no texto… Uso as array´s positions para isso.


$px = rand(10,200-(strlen($text)*20));
$py = rand(28,42);

Informo a posição que o texto será escrito sobre a imagem. Uso rand também para colocar em lugares diferentes. Usei uma fórmula derivada do tamanho da imagem (200×50).


imagettftext($im, $size_font, rand(-8,8), $px, $py,$letra,'ARIAL.TTF', $text);

Finalmente, escrevo o texto. rand(-8,8) Coloca o texto inclinado de -8 graus a 8 graus.

Aqui tem mais uma coisa importante. O arquivo ‘ARIAL.TTF’ deve estar junto do código. Não vou entrar em detalhes de organização. Isso é um exemplo, depois cada um adapta a sua realidade, estrutura e tudo mais.


imagejpeg($im);

Ah… Gera a imagem na tela…


imagedestroy($im);

E destroi… Abrimos em cima e fechamos aqui.

Vamos agora colocá-lo na sua página de verificação. Inseriremos em um campo IMG.


<div id="pesquisa"> <form name="captcha" method="post" action=""> <table> <tr> <td><img src="captcha.php" alt="CAPTCHA" /></td> <td><input size=10 type=text name=captcha value=""/></td> </tr> <tr align="center"> <td colspan=2><input type=submit name=botao value="..:: Enviar ::.."/></td> </tr> </table> </form></div>
 

Feito…

Considerações Finais…

Pode-se usar rand para trocar as imagens de fundo:
Pegue uma coleção de imagens, coloque-as em um diretório e dê à elas nomes seqüenciais, exemplo: bg_1.jpg, bg_2.jpg, bg_3.jpg, etc…
Depois, faça um código que leia o dir, conte os arquivos lá e carregue em $totalArquivos.
Faça um $fundo='./backgrounds/bg_'.rand(1,$totalArquivos).'.jpg');, pronto… Fundos automáticos… Não esqueça de substituir no código, trocando o fundo fixo pela variável $fundo.

Da mesma forma, pode-se usar rand para trocar as fontes da escrita dos códigos:
Pegue uma coleção de arquivos de fontes, coloque-as em um diretório e dê à elas nomes seqüenciais, exemplo: font_1.jpg, font_2.jpg, font_3.jpg, etc…
Depois, faça um código que leia o dir, conte os arquivos lá e carregue em $totalFontes.
Faça um $fonte='./fontes/font_'.rand(1,$totalFontes).'.TTF');, pronto… Fontes automáticas… Não esqueça de substituir no código, trocando a fonte fixa pela variável $fonte.

Acho que é isso… Aproveitem…

Categorias PHP, Programação, T.I. Tags captcha, login, php, programação, roubo de dados, segurança, verificação
Gerador de Senhas, Textos automático
Rodar MySQL no SHELL

.:: POSTS RECENTES

  • Tempo de mudanças…
  • A Bíblia em SQL (MySQL) em 13 Versões (link atualizado)
  • Como deletar milhões de arquivos de um diretório
  • 2 (dois) Monitores, lado a lado no Debian com XFCE
  • A Bíblia em SQL – 8 versões
  • Como logar via SSH sem senha
  • Diferença entre o cérebro masculino e feminino.
  • Atendimento 0800 da OI – Recorde absoluto – Uma luta sem fim…
  • Oracle – Dump de Base de Dados
  • Compactação e descompactação de arquivos em shell
  • Enviar senha para SUDO – SUDO em shell script
  • MySQL: Seqüência ( precedência ) de execução de uma query SQL
  • Como fazer FullText Search ( pequisa FullText ) em tables ( tabelas ) InnoDB
  • Como descobrir a Primary Key (chave primária) de uma Table (tabela) de um Data Base (banco de dados)
  • Acerto do Registro do Windows para colocar em domínio
  • BUG MySQL: Arredondamento de Inteiros, Decimais e md5
  • Camadas OSI
  • Coisas do nosso cérebro…
  • Computação Paralela (Cluster e SMP)
  • PHP – array_map recursivo
  • PHP – Array para XML
  • Rodar MySQL no SHELL
  • Como criar um CAPTCHA em PHP
  • Gerador de Senhas, Textos automático
  • Descubra o gênero (sexo) no seu cadastro

.:: Tags

adicionar arquivos array audio banco de dados base de dados biblia can you see me capitulo cerebro foto fotos hd hora horário imagem imagens indesejaveis indesejavel linux musica musicas MySQL ntpdate online on line php portas programação raid raid1 raid 1 segurança server servidor sgdb shell shell script sincroniza sincronizar socket sql versoes video windows

RSS .:: Brasil

RSS .:: Ciência e Tecnologia

RSS .:: Internacional

RSS .:: Economia

RSS .:: Carros

© 2025 Sydney Machado • Built with GeneratePress