Como utilizar captcha em seus sites

On 29/07/2010, in Captcha, Códigos, asp, by Feijão Costa

Precisei habilitar um captcha pra um site de votação, e no começo bati um pouco a cabeça, mas depois encontrei o caminho certo.

Pra não reinventar a roda, usei o Captcha mais famoso existente, o reCAPTCHA, e aqui embaixo segue um passo a passo do que você precisa fazer pra utilizar ele no seu site também.

  1. Acesso o site do reCAPTCHA, e cadastre-se lá. Você pode depois inserir diversos sites no seu perfil;
  2. Cadastre o site onde você irá utilizar o serviço. Esse cadastro é feito apenas para o domínio principal, e todos os subdomínios utilizam os mesmos dados. Atente para o fato que você pode habilitar suas Keys pra funcionar em qualquer URL, mas aconselho a usar isso somente se a sua aplicação vai rodar em vários domínios, fugindo ao seu controle;
  3. Após o cadastro você tera dois dados: sua chave pública (Public Key), e a chave privada (Private Key). Vamos usar elas no próximo passo;
  4. Na documentação do reCAPTCHA você encontra os plugins para as mais diversas linguagens. Nesse exemplo (que foi a minha necessidade) vamos fazer no ASP Clássivo. Eu uso o exemplo de códigos usado por eles, com uma pequena modificação. Abaixo segue o código que eu estou usando:
    <%
    recaptcha_challenge_field  = Request(“recaptcha_challenge_field”)
    recaptcha_response_field   = Request(“recaptcha_response_field”)
    recaptcha_public_key       = “SUA_CHAVE_PUBLICA” ‘ your public key
    recaptcha_private_key      = “SUA_CHAVE_PRIVADA” ‘ your private key
    ‘ returns the HTML for the widget
    function recaptcha_challenge_writer()
    recaptcha_challenge_writer = _
    “<script type=”"text/javascript”">” & _
    “var RecaptchaOptions = {” & _
    ”   theme : ‘clean’,” & _
    ”   lang : ‘pt’,” & _
    ”   tabindex : 0″ & _
    “};” & _
    “</script>” & _
    “<script type=”"text/javascript”" src=”"http://www.google.com/recaptcha/api/challenge?k=” & recaptcha_public_key & “”"></script>” & _
    “<noscript>” & _
    “<iframe src=”"http://www.google.com/recaptcha/api/noscript?k=” & recaptcha_public_key & “”" frameborder=”"1″”></iframe><>” & _
    “<textarea name=”"recaptcha_challenge_field”" rows=”"3″” cols=”"40″”></textarea>” & _
    “<input type=”"hidden”" name=”"recaptcha_response_field”"value=”"manual_challenge”">” & _
    “</noscript>”
    end function
    ‘ returns “” if correct, otherwise it returns the error response
    function recaptcha_confirm(rechallenge,reresponse)
    Dim VarString
    VarString = _
    “privatekey=” & recaptcha_private_key & _
    “&remoteip=” & Request.ServerVariables(“REMOTE_ADDR”) & _
    “&challenge=” & rechallenge & _
    “&response=” & reresponse
    Dim objXmlHttp
    Set objXmlHttp = Server.CreateObject(“Msxml2.ServerXMLHTTP”)
    objXmlHttp.open “POST”, “http://www.google.com/recaptcha/api/verify”, False
    objXmlHttp.setRequestHeader “Content-Type”, “application/x-www-form-urlencoded”
    objXmlHttp.send VarString
    Dim ResponseString
    ResponseString = split(objXmlHttp.responseText, vblf)
    Set objXmlHttp = Nothing
    if ResponseString(0) = “true” then
    ‘They answered correctly
    recaptcha_confirm = “”
    else
    ‘They answered incorrectly
    recaptcha_confirm = ResponseString(1)
    end if
    end function
    %>
  5. Insira o código acima em um arquivo .asp, por exemplo inc.captcha.asp, não esquecendo de inserir sua chave pública e sua chave privada no início do arquivo;
  6. Crique um arquivo chamado formulario.asp e nele você vai inserir seu formulário normalmente, no início do arquivos vamos fazer o include do inc.captcha.asp e no formulário vamos inserir a chamada para o captcha. Exemlpo:
    <!–#include file=”inc.captcha.asp”–>
    <html>

    <form name=”formulario” method=”post” action=”processa.asp”>

    <%=recaptcha_challenge_writer()%>
    <input type=”submit”>
    </form>
    </html>
  7. O próximo passo será criar o processa.asp que irá receber os dados do seu formulário. Nesse arquivo você vai novamente fazer o include do inc.captcha.asp, e rodar a função de verificação. Se o captcha foi digitado corretamente ele retorna uma string vazia, caso contrário retorna um erro. Abaixo um exemplo pro tratamento:
    <!–#include file=”inc.captcha.asp”–>
    validaCaptcha = recaptcha_confirm(recaptcha_challenge_field,recaptcha_response_field)
    if(validaCaptcha = “”) then
    Response.write(“Sucesso!”)
    else
    Reponse.write(“Erro!”)
    end if
    %>

O básico esta ai. Com isso da pra você já brincar um pouco com o reCAPTCHA. Vale gastar alguns minutos lendo um pouco a documentação, inclusive sobre a parte de personalização. Sucesso ai!

Compartilhe:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Yahoo! Buzz
  • Twitter
  • Posterous
  • Reddit
  • StumbleUpon
  • Tumblr
 

Leave a Reply

Spam protection by WP Captcha-Free