Home
Ter
23
Set

Atualização: JCCreCaptcha 2.0b

Atenção, abrir em uma nova janela. PDFImprimirE-mail

Caminhos para o release 2.0b

 

Usar o JCCreCaptcha em um formulário exige que sejam identificados dois pontos, no código fonte deste formulário, para se fazer a chamada ao componente:

 

1) O ponto em que a interface do reCatpcha precisa ser inserido no formulário;

 

2) O ponto em que a tentativa de solucionar o Captcha precisa ser validada, resultando na aceitação do “request” e em seu conseqüente processamento ou em sua recusa.

 

 

Identificar estes pontos e inserir o código de integração não é uma tarefa complicada para alguém com conhecimentos básicos de programação PHP e Joomla, mas aqueles que não detêm este conhecimento sentem imensa dificuldade em fazer uso da extensão, nestes termos.

 

Em uma resposta pontual a muitas requisições de inserir o reCaptcha no formulário de contatos do Joomla, disponibilizei a Atualização JCCreCaptcha 1.01.

 

Esta atualização permite que um usuário com nenhum conhecimento de programação configure, através de um plugin e parâmetros adicionais, a inserção da inteface do reCaptcha no formulário padrão de contatos do Joomla e, a conseqüente validação da tentativa de solucionar o Captcha.

 

Pensando em estender este recurso de forma que possa ser aplicado, não só ao formulário de padrão de contatos do Joomla, mas a virtualmente qualquer formulário, que venho empregando o tempo disponível que tenho entre os projetos que venho desenvolvendo profissionalmente, para disponibilizar uma solução, que - se não abrange 100%, abranja a imensa maioria dos formulários do Joomla 1.5, e suas extensões, (pelo menos as “bem comportadas”).

 

Esta solução é o Release 2.0b que tenho o prazer de postar hoje.

 

 

Inserindo a Interface do reCaptcha em qualquer formulário

 

Antes de mais nada, é necessário deixar claro que não existe uma solução mágica para este problema.

 

Toda solução tipo “código-zero”, precisa se basear em certas premissas para que possa compensar a perda da flexibilidade de se utilizar o recurso pela via da programação.

 

No caso da inserção do reCaptcha em qualquer formulário, estas premissas são que:

 

a) O formulário que desejamos proteger com o reCaptcha seja acionado por um item de menu;

 

b) O usuário possa definir o nome de um dos campos deste formulário, para que seja feito o posicionamento da interface do reCaptcha em relação a este campo;

 

 

mod_JCCreCaptchaPlacer

 

Os usuários da versão 1.01 perceberão que ao invés do plugin JCCreCaptchaCV, temos o módulo mod_JCCreCaptchaPlacer, no release 2.0b.

 

O JCCreCaptchaCV não faz mais parte do pacote. Em seu lugar, temos um módulo que tem a finalidade de definir em qual página está o formulário que deve ser protegido pelo reCaptcha e em qual lugar do formulário a interface do reCaptcha deve ser apresentada.

 

Para usá-lo, basta seguir os passos abaixo:

 

1. Posicione o módulo na área mais “alta” do seu template:

 

Não precisa se preocupar com seu design. Esse módulo não produz qualquer saída para a página, trabalha apenas nos “bastidores”.

 

JCCreCaptchaPlacer - Posicionando o módulo

 

 

2. Selecione a opção de menu que abre o formulário desejado, em “Menu Assignment”:

 

JCCreCaptchaPlacer - Selecionando o menu

 

No exemplo acima, criamos anteriormente uma opção de menu “Registre-se” cujo “Menu Type” selecionado foi a visão “Default Registration Layout”, do componente “User”, correspondente ao formulário padrão de registro de usuários do Joomla 1.5.

 

 

3. Configurar a posição do reCaptcha com relação a um dos campos do formulário:

 

JCCreCaptchaPlacer - Parâmetros

 

“Form Item ID” é o parâmetro onde informamos o ID do campo do formulário, a partir do qual posicionaremos o reCaptcha.

 

“Position” determina a posição com relação ao campo em “Form Item ID”. Suas opções são “After”, depois, “Before”, antes e “Inner”, dentro.

 

Obs.: “Inner” não pode ser usado com qualquer campo, somente para os campos HTML que funcionem como “containers”, como um DIV, por exemplo.

 

 

4. Configurar a persistência dos campos do formulário:

 

Este passo opcional para o funcionamento do JCCreCaptcha, é a finalidade do campo “Restore Field List”.

 

Sempre que um usuário errar uma tentativa de solucionar o reCaptcha, a solicitação é devolvida para a página do formulário com uma mensagem de erro. Caso você não configure este parâmetro, será obrigado redigitar todos os campos do formulário, a menos que o formulário possua seu próprio mecanismo de persistência.

 

Como não queríamos contar exclusivamente com isso, você pode determinar os campos cujo conteúdo devem ser persistidos entre uma tentativa e o retorno de um erro. O preenchimento consiste em enfileirar os IDs dos campos desejados, separando-os por ponto-e-vírgula, (não pode haver espaços).

 

 

5. PAUSA 1: Como descobrir os nomes e IDs de campos de um formulário:

 

O método que vou apresentar, utiliza um recurso do navegador Google Chrome, que é o navegador que utilizo.

 

Pelo que ouço falar, é bem provável que os usuários do Firefox possuam também plugins que os auxiliem nesta tarefa. Quanto ao IE, o único recurso que conheço é visualizar e ler o código-fonte (HTML) da página.

 

- Navegue para a página do formulário;

 

- Clique com o botão direito sobre o campo cujo o nome você deseja saber, e escolha o comando “Inspect Element”;

 

- Basta olhar o código da TAG HTML que gera o campo. Faremos uso do valor da propriedade “ID”;

 

JCCreCaptchaPlacer - Descobrindo nomes de campos

 

 

 

6. Salve as mudanças no módulo. O primeiro passo para inserir o reCaptcha em seu formulário está feito!

 

 

Inserindo a validação da tentativa de solucionar o reCaptcha

 

As premissas do JCCreCaptcha, quando ele atua em conjunto com o mod_JCCreCaptchaPlacer, são:

 

 

a) Todos os formulários Joomla 1.5 usam uma mesma estrutura para executar ações, após seu preenchimento;

 

b) O usuário pode especificar o componente ao qual pertence o formulário;

 

c) O usuário pode especificar a ação que corresponde à tentativa de envio do formulário, que deve ser protegido pelo reCaptcha.

 

 

JCCreCaptcha 2.0b

 

Lembrando que aqueles que quiserem continuar usando o JCCreCaptcha 2.0b, via código, podem fazê-lo normalmente, conforme orientado no seu release 1.0, damos seqüência demonstrando a configuração necessária para usá-lo na perspectiva “código-zero”:

 

1. Após instalar o novo release, abra sua interface de parâmetros:

 

JCCreCaptcha - Parâmetros

 

Obs.: Não vamos comentar as propriedades que já estavam presentes nos releases anteriores. Havendo dúvida, consulte os posts anteriores do componente, desde a release 1.0.

 

 

2. Configure o novo parâmetro “Blocked Tasks”:

 

“Blocked Tasks” deve ser preenchido com um par de valores. O primeiro valor é o nome interno do componente Joomla ao qual pertence o formulário protegido.

 

O segundo valor, deve ser preenchido com o valor da “Task” usada para executar o envio do formulário preenchido para processamento no site.

 

Ambos os valores devem ser separados por vírgula.

 

 

3. PAUSA 2: Como descobrir o nome do componente do formulário que estivermos protegendo:

 

Isso é bem fácil. Ao criar a opção de menu, observe o valor que segue a variável “option”, no campo link de “Menu Item Details”:

 

JCCreCaptcha - Descobrindo o nome do componente

 

Na imagem acima, mostramos os parâmetros do menu “Registre-se” que criamos para o exemplo.

 

 

4. PAUSA 3: Como descobrir o nome da Task associada ao envio do formulário preenchido:

 

Faremos uso do “Inspect element” do Google Chrome, novamente. Selecione o último campo do form e procure por um campo escondido de nome “task”:

 

JCCreCaptcha - Descobrindo o nome da task

 

O segundo valor do parâmetro “Blocked Tasks” é o conteúdo do parâmetro “value” do campo escondido “task”.

 

Assim, a configuração de “Blocked Tasks”, para o nosso exemplo, seria:

 

 

“com_user,register_save”

 

 

 

 

 

Exemplos da Configuração

 

1. Formulário “Registre-se” com o reCaptcha “injetado” nele;

 

JCCreCaptcha - Registre com JCCreCaptcha

 

 

2. Envio do formulário com solução do Captcha errado ou não informado:

 

JCCreCaptcha - Solução do Captcha incorreta

 

 

 

3. Exemplo preenchimento correto do Captcha:

 

JCCreCaptcha - Retorno para o formulário

 

 

 

4. Resposta ao preenchimento correto:

 

JCCreCaptcha - Resposta ao Preenchimento Correto

 

 

 

Tópicos Avançados do JCCreCaptcha 2.0b

 

Usando o reCaptcha em mais de um formulário

 

mod_JCCreCaptchaPlacer

 

 

1. Crie um novo módulo, a partir do módulo mod_JCCreCaptchaPlacer;

 

- Na interface administrativa do Joomla, acione o comando “Module Manager”, do menu “Extension”:

 

- No “Module Manager”, clique no botão “New”. Isto abrirá a relação dos módulos a partir dos quais você pode criar um novo módulo. Selecione a opção “JCC reCaptcha Placer Module” e clique no botão “Next”

 

JCCreCaptchaPlacer - Instanciando o módulo

 

 

 

2. Pronto: Agora com seu novo módulo, você pode posicioná-lo em outra página e poderá configurar uma nova posição para o reCaptcha nesta página.

 

 

 

JCCreCaptcha 2.0b

 

 

1. Configurando a propriedade “Blocked Tasks”

 

 

Como vimos, anteriormente, cada formulário protegido pelo reCaptcha precisa estar configurado na propriedade “Blocked Tasks”, para que o formulário esteja, efetivamente, protegido.

 

A propriedade “Blocked Tasks” pode indicar mais de um “task” simultaneamente. Para isso, basta separá-los por ponto-e-vírgula, como no exemplo abaixo:

 

 

com_user,register_save;com_contact,register

 

 

 

 

 

“Restore Field List” x ID x NAME

 

mod_JCCreCaptchaPlacer

 

 

Em HTML, cada campo pode possuir dois “nomes”. Um deles é o definido pelo argumento “Name” da tag HTML que cria o campo. O outro é o definido pela tag ID. Ao preencher “Restore Field List”, é importante observar se os campos que estamos preenchendo possuem nomes diferentes na propriedade ID e NAME.

 

Caso tenham, “Restore Field List” deve ser preenchido da seguinte forma:

 

 

[ID do Campo1], [NAME do Campo1]; [ID do Campo2],[NAME do Campo2]; (etc...)

 

 

Um exemplo desta situação é o formulário de contatos do Joomla. Inspecione os nomes dos campos deste formulário e compare com o correto preenchimento abaixo:

 

 

“contact_name,name;contact_email,email;contact_subject,subject;contact_text,text”

 

 

Downloads & Links do Artigo

 
O componente é fornecido "no estado". Nenhuma garantia, nem suporte estará associado ao seu uso. O componente é disponibilizado nos termos da licença GNU-GPL. Conheça estes termos aqui.

 

 Update: JCCreCaptcha 2.01b
 A última atualização do plugin.  Corrige um bug que ocorre na instalação de alguns ambientes. Consulte antes de baixar o release desta página! 

 

ExtensionsJCCreCaptcha2.0b.zip
ZIP com o instalador para o JCCreCaptcha e para o JCCreCaptchaPlacer. Descompacte antes de instalar!

 

 

Finalizado

 

Embora a integração do reCaptcha a qualquer formulário web, via programação, seja bem simples, ela demanda algum conhecimento de PHP, o suficiente para determinar os locais corretos para inserir os códigos de integração.

 

Com a estratégia adotada por este release, podemos fazer a “injeção” do reCaptcha em formulários, precisando de muito poucos pré-requisitos, que são: ter uma opção de menu para este formulário e conhecer os nomes dos controles do formulário onde desejamos integrar o reCaptcha. Acredito que isto irá atender à grande maioria dos não-programadores em PHP.

 

Apesar disto, saliento que esta é uma release beta. Nossa seção de comentários está aberta para receber relatos do funcionamento ou não em determinados contextos específicos e – certamente – estas situações estarão em nossa lista de desenvolvimentos futuros.

 

 

Sobre o Autor

 

Júlio Oliveira
Júlio Oliveira é Analista de Sistemas com Pós-graduação em Gerência de Projetos de Software pela PUC/Rio. Têm 20 anos de experiência em desenvolvimento de software corporativo, dos quais 10 anos, em seguradoras de médio e grande porte, atualmente, trabalha com consultoria de TI e desenvolvimento de web sites.

 

 



Adicionar este artigo ao seu site de favoritos ?
Digg! Reddit! Del.icio.us! Google! Live! Facebook! Technorati! StumbleUpon! MySpace! Netvouz! Mister-Wong! Diigo! Faves! Ask! DZone! Swik! Twitter! LinkedIn!

Comentários (4)
4 Qui, 25 de Fevereiro de 2010 23:05
Kent
This doesn't work I setup a contact form and copied and pasted right from this page. Not only did it not retain the fields on not entering the captcha it sent the form anyway.

What a waste.
3 Dom, 10 de Janeiro de 2010 01:52
Gary
First, Thank you for this great mod and plugin Everything installed properly and the captcha positioned correctly in my form. I do have a problem though, I installed and included all the parameter correctly I believe but I can submit the form without including the words in captcha. The Blocked Tasks are com_contact, submit So I am pretty sure everything is correct. Do you gave any sugestions on how I might fix this?
Thank you
DeZiner
2 Ter, 29 de Dezembro de 2009 13:58
Pedro
Cara, Parabéns pelo trabalho!

Instalei aki, segui seu tutorial, e funcionou!

Sou muito grato!

Parabens pela iniciativa!
Pedro.
1 Seg, 28 de Dezembro de 2009 20:29
Fabrizio
Antonio, I've your same problem. how did yoou solve it?
Thank you in advance for the support. best regards,

Adicionar comentário

Seu apelido/nome:
Comentário:

Menu Principal

Editar traduo para English (United Kingdom) Editar traduo para Português (Brasil)
Blog Sistemas e Cia