Começarei a escrever alguns artigos aqui no blog. E nesse primeiro artigo falarei sobre como implementar captcha em aplicação GX.
CAPTCHA (completely automated public turing test to tell computers and humans apart) é uma técnica utilizada para verificar se quem está requisitando um determinado serviço do software é um usuário, e não uma aplicação robô. A idéia basicamente é apresentar caracteres de validação para que sejam digitados pelo usuário para serem validados pela aplicação, esses caracteres devem ser legíveis a humanos, mas não para aplicações. Geralmente isso é feito através de imagens com caracteres distorcidos.
A técnica é muito utilizada para evitar spam em listas de discussão, chats, e telas de cadastro que não requerem login.
Para o exemplo que irei mostrar, vou utilizar o web service TRYNT CAPTCHA, que é gratuito. Ele fornece um mecanismo simples para a geração de imagens 100 x 50 pixels e oferece uma seleção de cinco diferentes estilos de fontes e controle sobre as cores.
Para mais informações sobre este web service, acesse http://www.trynt.com/trynt-captcha-api/
Vamos ao que interessa, a implementação:
O primeiro passo é criar uma web panel e definir as seguintes variáveis:
- &b - caracter(6)
- &bg - caracter(6)
- &c - caracter(6)
- &code - caracter(4)
- &fg - caracter(6)
- &fo - numérico(1)
- &httpClient - HttpClient
- &reader - XmlReader
- &retorno - caracter(150)
- &img - bitmap
code -&code
fo - &fo
bg - &bg
fg - &fg
b - &b
c - &c
Enviar dados -> (será o botão que executará o evento)
&img - (onde será exibida a imagem gerada pelo web service)
Na aba de eventos da web panel, escolha o evento Enter, esse evento é o que está associado ao botão Enviar dados e entre com o seguinte código:
(clique na imagem para melhor visualização do código)
Vamos as explicações:
Nas linhas 2 e 3 informo o endereço do provedor do web service e a porta no qual atende a requisição.
A linha 4 é onde invoco o serviço, utilizando o método GET do protocolo HTTP.
Nas linhas 6 e 10 é feito uma verificação para ver se houve algum erro.
Na linha 15 é onde obtenho a resposta do serviço, ele retorna um xml que contém o endereço da imagem.
As linhas 16 a 19 é onde leio o xml e retiro o path da imagem.
Na linha 21 carrego a variável &img com o path recuperado na variável retorno, utilizando o comando loadbitmap.
Espero comentários e sugestões de vocês.
Um abraço e até a próxima!
2 comentários:
Eu não testei ainda, mas como seria para receber caracter de retorno? por exemplo: 'Ok' ou 'Erro' ?
No exemplo eu não faço o tratamento do que foi digitado.
Vc teria que implementar a rotina.
Isso foi feito para GX 9.0 eu recomendo vc usar versões mais novas do GX, pois elas já têm recursos de capctha muito bons.
Postar um comentário