segunda-feira, 22 de março de 2010

Captcha Aritmético - Proteja-se de Spam

Olá a todos, hoje iremos aprender a fazer uma página de validação Captcha em ASP, porém diferente da comum, nessa o usuário terá que efetuar uma conta simples para autenticar.


Se você não viu confira aqui o nosso tutorial sobre Captcha.

Agora iremos bolar no mesmo esquema citado acima.

criaremos aqui uma página que ira criar o Captcha.

Proteja seu site de robos 



captchaAritmetico.asp

   <%

    ' aqui randomizamos o valor funcao1 e funcao2 que irão ser os números da conta
    randomize  
   funcao1 = Int(10 * Rnd )
   funcao2 = Int(10 * Rnd )
  
   'randomizamos um valor que vai de 0 até 2 e representara o operador
   operacao =  cInt(2 * Rnd )
  
   'geramos o resultado e o operador baseando-se no valor sorteado anteriormente
   select case operacao
       case 0
        result     = funcao1 + funcao2
        oper     = "+"
       case 1
        result     = funcao1 - funcao2
        oper     = "-"
       case 2
        result     = funcao1 * funcao2
        oper     = "x"   
    end select
    'arquivamos na sessão senha o resultado
   Session("Senha") = cstr(result)
  
   'e criamos a variavel que será exibida ao usuário
   operac = cstr(funcao1) & " " & oper & " " & cstr(funcao2)

   'Cria o objeto Jpeg

   Set Jpeg = Server.CreateObject("Persits.Jpeg")
  
  

   'Imagem usada como fundo no caso mandei um JPG com o 1px de largura e altura e fundo branco apenas para compor a área

   Path = Server.MapPath("blank.jpg")

   'Abre a imagem existente

   Jpeg.Open Path

   'Salva a imagem. Aqui foi usada a pasta teste, que obrigatoriamente deve ter permissão de escrita.

   'Altere-a pela pasta onde será salva a imagem.

   'LEMBRE-SE A PASTA DEVERÁ TER PERMISSÃO DE ESCRITA

   Jpeg.Save Server.MapPath("captcha.jpg")

   'Define altura e largura da imagem.

   Jpeg.Width = 100

   Jpeg.Height = 40


   'Define cor, tamanho e tipo de qualidade do texto

   Jpeg.Canvas.Font.Color = &H800000
   
   Jpeg.Canvas.Font.Size = 40

   Jpeg.Canvas.Font.Bold = True

   Jpeg.Canvas.Font.Quality = 4

    'aqui inserimos a operação que sera vista pelo usuário
   Jpeg.Canvas.PrintText 0, 0, operac
  
   'Envia a imagem para o navegador.

   Jpeg.SendBinary

   'Remove a instância do objeto da memória

   Set Jpeg = Nothing

   %>
 


Agora iremos exibir essa imagem gerada acima e também criaremos um campo de texto para que o usuário possa digitar o resultado.


envia.asp

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Captcha</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="valida.asp">
<img id="cap" src="captchaAritmetico.asp" width="100" height="40">
<label>
<input type="text" name="captcha" id="captcha" />
</label>
</form>
</body>
</html>


Agora sim iremos fazer a mágica acontecer, reparem que na página envia.asp existe um imagem, porém a propriedade src dela é apontada para página captchaAritmetico.asp, vcs estão entendendo?

Beleza, agora iremos autenticar isso e conferir o projeto trabalhando.

valida.asp

<%
if request("captcha") = session("Senha") then
    response.Write "Correto"
    else
    response.Write "Errado"
end if
%>

resolvido, agora abram a página envia.asp e divirtam-se


Eu estarei aqui para tirar as dúvidadas da galera e se precisarem mandem um e-mail.


adrianoaruom@hotmail.com

Nenhum comentário: