ReactionN Posted May 20, 2012 at 02:49 PM Report #456961 Posted May 20, 2012 at 02:49 PM Boas pessoal, Tenho aqui uma dúvida que espero que seja esclarecida, Eu tenho um formulário onde faço o registo de novos utilizadores e tenho um recaptcha code para ter o formulário protegido do spam, A dúvida é a seguinte, eu tenho um script que verifica se os campos estão devidamente preenchidos mas jnão verifica se o recaptcha code foi inserido correctamente ou não. Já tentei de diversas formas e até agora, todas sem sucesso. Desde já agradeço a vossa atenção. 🙂 Bom fim de semana.
brunoais Posted May 20, 2012 at 03:34 PM Report #456969 Posted May 20, 2012 at 03:34 PM Já tentaste usar o XMLHttpRequest() para fazer isso? "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
ReactionN Posted May 20, 2012 at 04:19 PM Author Report #456980 Posted May 20, 2012 at 04:19 PM Boas brunoais, Nunca usei essa função nem tão pouco sei como é que ela funciona. :s Já andei a fazer umas pesquisas mas mesmo assim ainda não consegui compreender na totalidade o que ela faz.
softklin Posted May 20, 2012 at 04:30 PM Report #456984 Posted May 20, 2012 at 04:30 PM Já tentaste este exemplo de forma isolada para verificar se a tua chave está a funcionar? https://developers.google.com/recaptcha/docs/php?hl=pt-PT Precisas de chamar aqueles métodos para te ser gerado os campos de formulário corretos onde o utilizador vai digitar o resultado do CAPTCHA. Nota que precisas que o teu servidor tenha o PHP instalado sem restrições de sockets (isto é, o servidor poder contactar com outros). Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.
ReactionN Posted May 20, 2012 at 09:51 PM Author Report #457045 Posted May 20, 2012 at 09:51 PM Boas softklin, As chaves estão a funcionar lindamente, mesmo em localhost, a única diferença é que agora está dentro de um form onde é necessário que o utilizador preencha o CAPTCHA (entre outros campos) de forma a prevenir a criação de utilizadores abusiva (spam) e eu estou a usar um script que verifica se o campo x foi preenchido ou não e gostava de, se possível, integrar a verificação do CAPTCHA. Um abraço e desde já obrigado pela ajuda.
ReactionN Posted May 22, 2012 at 07:55 AM Author Report #457306 Posted May 22, 2012 at 07:55 AM Então pessoal, mais ninguem consegue dár-me uma ajuda? :s
dash Posted May 22, 2012 at 08:06 AM Report #457309 Posted May 22, 2012 at 08:06 AM Então pessoal, mais ninguem consegue dár-me uma ajuda? :s Se não puseres aí o teu código será difícil ajudar.
taviroquai Posted May 22, 2012 at 05:20 PM Report #457432 Posted May 22, 2012 at 05:20 PM Recaptcha tem lá um método/função para verificar se o código introduzido pelo utilizador está correcto... Manual PHP https://developers.google.com/recaptcha/docs/php?hl=pt
ReactionN Posted May 26, 2012 at 08:43 PM Author Report #458257 Posted May 26, 2012 at 08:43 PM (edited) Boas pessoal, Antes demais quero pedir desculpa por não ter dado resposta mais cedo, tive com uns problemas que fizeram com que não tivesse tempo para dar aqui um saltinho Eu tenho o seguinte código a verificar se os campos estão preenchidos ou não <script type="text/javascript"> function validateForm(frm) { if ( frm.Utilizador.value =='' || frm.Password.value =='' || frm.CPassword.value =='' ||frm.Email.value ==''|| frm.Nome.value =='' || frm.Morada.value ==''|| frm.Localidade.value ==''|| frm.Pais.value =='' || frm.CPostal.value ==''|| frm.Telefone.value ==''|| frm.Telemovel.value ==''||frm.Fax.value ==''|| frm.Contribuinte.value =='') { alert( "Por favor, certifique-se de que o formulário está completo e válido." ); return false; } if (frm.Password.value != frm.CPassword.value) { alert( "Por favor, certifique-se de que as passwords são iguais!" ); return false; } return true; } </script> O que eu pretendia era, se possivel, integrar a verificação do capcha code neste pedaço de código. Edited May 27, 2012 at 07:46 PM by brunoais
softklin Posted May 27, 2012 at 11:57 AM Report #458343 Posted May 27, 2012 at 11:57 AM Se quiseres fazer essa verificação por Javascript, tens de usar mesmo AJAX/XMLHttpRequest, porque para verificares se o captcha está correto ou não, tens de enviar a resposta do utilizador juntamente com a tua chave privada para os servidores do Google. Ora, a tua chave privada não pode ser revelada publicamente, por isso, não a deves colocar num ficheiro com código Javascript pois fica acessível a toda a gente. Aqui entra o XMLHttpRequest, pois este apenas faz um pedido a um script PHP teu que tem a chave privada de forma não acessível ao público, e apenas diz se o código está certo ou não. Isto é possível de se fazer, mas não te recomendo por uma simples razão: se o utilizador tiver o javascript desligado, a validação do captcha não te serve de nada, porque não vai ser executada. Nesse caso, acho que devias implementar a validação do captcha apenas do lado do servidor, porque corre de ambas as maneiras. Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.
ReactionN Posted May 30, 2012 at 10:48 AM Author Report #459106 Posted May 30, 2012 at 10:48 AM Podes-me mandar como é que funciona o XMLHttpRequest? é que nunca trabalhei com essa função :s
brunoais Posted May 30, 2012 at 10:52 AM Report #459109 Posted May 30, 2012 at 10:52 AM (edited) Podes-me mandar como é que funciona o XMLHttpRequest? é que nunca trabalhei com essa função :s Nada melhor que a melhor documentação do DOM e de javascript grátis que existe na internet, o MDN 😉 AJAX: Getting Started Edited May 30, 2012 at 10:53 AM by brunoais melhorei um pouco a frase "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
ReactionN Posted May 30, 2012 at 09:41 PM Author Report #459280 Posted May 30, 2012 at 09:41 PM Nada melhor que a melhor documentação do DOM e de javascript grátis que existe na internet, o MDN 😉 AJAX: Getting Started Obrigado, vou então estudar e ver como me saio 😛
nunolevezinho Posted May 31, 2012 at 09:15 AM Report #459338 Posted May 31, 2012 at 09:15 AM (edited) Olha não é bem isto que queres mas acho que basta adaptares para o teu caso. <script type="text/javascript"> function createRequestObject() { var ro; ro = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); return ro; } var http = createRequestObject(); function sndReq(action) { http.open('get', 'verificaCaptcha.php?action='+action); http.onreadystatechange = handleResponse; http.send(null); } function handleResponse() { if(http.readyState == 4){ var response = http.responseText; var update = new Array(); if(response.indexOf('|') != -1) { update = response.split('|'); document.getElementById(update[0]).innerHTML = update[1]; } } } setInterval(function() { var string = document.getElementById("CaptchaID").value; sndReq(string); }, 2000); </script> Edited May 31, 2012 at 09:16 AM by nunolevezinho
brunoais Posted May 31, 2012 at 10:38 AM Report #459390 Posted May 31, 2012 at 10:38 AM O uso do innerHTML é desaconselhado, não resolve o problema que foi indicado por mim anteriormente. O código do utilizador (javascript) deve receber só dados num formato que não HTML. Tu assumes que todos os requests correm bem. Prepara-te para obter uma exceção quando isso não acontece. Nota: Para suportar todos os browsers que são oficialmente suportados pelas empresas que fazem os browsers, a função createRequestObject() é desnecessária. "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
ReactionN Posted June 6, 2012 at 01:40 PM Author Report #460869 Posted June 6, 2012 at 01:40 PM Boas pessoal, Acabei por resolver o problema de outra maneira, Em vez de verificar na página onde se regista vai verificar na página onde estão as querys que inserem os dados na Base de dados ( como é óbvio verifica se o código está correcto antes de executar as querys 😛 ), O código que usei para verificar é o que está disponivel https://developers.google.com/recaptcha/docs/php?hl=pt-PT Desde já obrigado pela vossa ajuda, Um abraço
softklin Posted June 6, 2012 at 01:45 PM Report #460871 Posted June 6, 2012 at 01:45 PM Acho que foi a escolha mais sensata. Se optasses por fazer a validação do captcha por Javascript, tinhas 2 trabalhos: fazer a validação com AJAX e fazer a validação no servidor (obrigatório). Se fizesses apenas a verificação por Javascript, não te ia servir de nada, como expliquei atrás. Cumps. Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now