terça-feira, 28 de setembro de 2010

3 - CAPTCHA COM PHP - colocando em prática


Depois de ver alguns conceitos e entender a importancia de cada função chegou a hora de montar nosso captcha então segue abaixo o script comentado, caso alguem tenha alguma dúvida poste ai.

<?php
session_start();
/* se voce quiser que ele diferencie minúsculas de maiúsculas substitua isso 
$resposta = strtolower($_POST["CAPTCHA"]) != strtolower($_SESSION["CAPTCHA"]) por isso
$resposta = $_POST["CAPTCHA"] != $_SESSION["CAPTCHA"]*/

if($_POST["CAPTCHA"]) $resposta = strtolower($_POST["CAPTCHA"]) != strtolower($_SESSION["CAPTCHA"])? "Você digitou CAPTCHA errado tente novamente" : "Você digito CAPTCHA corretamente";

$v = array("a","A","e","E","i","I","o","O","u","U");
$c = array("b","B","c","C","cr","CR","d","D","f","F","g","G","h","H","nh","NH","lh","LH","ch","CH","j","J","k","K","l","L","m","M","n","N","p","P","qu","QU","r","R","rr","RR","s","S","ss","SS","t","T","v","V","w","W","x","X","y","Y","z","Z","pr","PR","tr","TR");

$tamanho_palavra = rand(4,7); // defini minimo e o maximo de caracteres
$Caractere = 0;
// cria a palvra do CAPTCHA
while($Caractere < $tamanho_palavra){
   $V = $v[rand(0,count($v)-1)];
   $C = $c[rand(0,count($c)-1)];
   $palavra .=$C.$V;
   $Caractere = strlen($palavra);
}
$_SESSION["CAPTCHA"] = $palavra; // guardo a palavra gerada na sessão
// começo a criar a imagem //
$font = imageloadfont("fontes/lizze.gdf"); // carrego a fonte a ser usada 
$Nome = "CAPTCHA.png"; // define o nome da imagem gerada
$imagem = ImageCreate(300,100); // define os tabanhos

$branco = ImageColorAllocate($imagem, 255, 79, 79); // cor do fundo

$w = 60; // define a largura do circulo
$h= 60; // define a altura do circulo
// faço os circulos para confundir os robos a função rand determina o minimo e o maximo de circulos
for($n=0;$n<rand(2,4);$n++)
{
 // cor da linha do circulo aqui eu fiz uma seleção que de valores randomicos para gerar cores do tom vermelho a verde
 $cordalinha = ImageColorAllocate($imagem, rand(10,255), rand(100,255), rand(0,100)); 
 $i=0;
 $x = rand(0,285);
 $y = rand(0,85);
 $quantos = rand(10,100);
 for($i=0;$i<$quantos;$i++)
 {
  imagearc($imagem, $x, 20, $w-($i/5), $h-($i/5),rand(90,360),rand(90,360),$cordalinha);
        imagearc($imagem, $x, 20, $w+($i/5), $h+($i/5), rand(90,360),rand(90,360), $cordalinha);
    }
}
/// texto ///
$cordotexto = ImageColorAllocate($imagem, rand(39,0), rand(18,100), rand(55,255));
ImageString($imagem, $font, rand(20,55), rand(20,35), $palavra, $cordotexto);
// salva a imagem 
ImagePNG($imagem, $Nome );
// limpa a memória
ImageDestroy($imagem);
// coloca a imagem no diretório
$destino = "./imagens/$Nome";
$copy = copy($Nome, $destino); 
?>
<table width="304" height="100" bgcolor="#ff4f4f">
 <tr>
  <td>
   <img style=" position:absolute; width:300px; height:100px; text-align:center; z-index:1" src="imagens/fundo.png" />
   <img src="imagens/CAPTCHA.png" />
  </td>
 </tr>
 <tr>
  <td align="center">
   digite o texto acima<br />
   <form method="post">
    <input type="text" size="30" name="CAPTCHA" /><input type="submit" value="Enviar" /><br />
    <font size="-1">O programa não diferencia maiúsculas ou minusculas!</font>
   </form>
  </td>
 </tr>
</table>
<?php
echo $resposta;
?>
Obs: Cria uma pasta chamada imagens no local onde o script for executado ou altere o local para onde a imagem deve ir.

Veja este Exemplo abaixo:



download do exemplo
Para acompanhar todos os post relacionado a esse tema basta seguir esse link Criar captcha

Nenhum comentário:

Postar um comentário

Related Posts with Thumbnails