Atualização: JCCreCaptcha 2.0b
20
Jun
Atualização: JCCreCaptcha 2.0b
Escrito por Júlio Oliveira Última atualização (Dom, 15 de Novembro de 2009 15:20)
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”.
![]()
2. Selecione a opção de menu que abre o formulário desejado, em “Menu Assignment”:
![]()
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:
“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”;
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:
![]()
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”:
![]()
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”:
![]()
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;
2. Envio do formulário com solução do Captcha errado ou não informado:
3. Exemplo preenchimento correto do Captcha:
4. 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”
![]()
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
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!
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
Downloads























What a waste.
Thank you
DeZiner
Instalei aki, segui seu tutorial, e funcionou!
Sou muito grato!
Parabens pela iniciativa!
Pedro.
Thank you in advance for the support. best regards,