PHP-JQuery:recaptcha的问题

时间:2014-02-27 01:01:33

标签: php jquery recaptcha

我有一个包含两个表单的HTML文件,一个用于注册,另一个用于登录。 因此,当我注意到recaptcha不允许每页放置更多的验证码时,我认为我只能为注册表单或登录表单显示验证码(如果所有字段都为空)。所以,我试着从注册表开始,但它不起作用。

HTML:

...
<form> 
 <input type="text" id="username_reg"></input>
 <input type="text" id="email_reg"></input>
 <input type="password" id="password_reg"></input>
 <input type="password" id="cpassword_reg"></input>
 <span id="captcha_reg"></span>
</form>
...

JQuery的:

$(document).ready(
 function()
 {
  $("#username_reg").change(
   function()
   {
    if ($('#username_reg').val()!='' && 
        $('#email_reg').val()!='' && 
        $('#password_reg').val()!='' &&
        $('#cpassword_reg').val()!='')
    {
     $('#captcha_reg').html('<?php require_once("recaptchalib.php");echo recaptcha_get_html("mypubkey"); ?>'
     );
    }
   }
  );
  $("#email_reg").change(
   //same code as first
  );
  $("#password_reg").change(
   //same code as first
  );
  $("#cpassword_reg").change(
   //same code as first
  );
 }
);

我知道JQuery代码没有那么优化(从内存资源的角度来看),但我没有任何其他方法来实现它。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

我曾做过类似的事情。你想要做的是有一个隐藏的模板元素,你可以将其转换为reCaptcha小部件,然后当用户切换到相应的部分时,将整个小部件移动到相应的表单div容器。您可以在此时清除/重置您的字段,或者在显示该部分中的用户之前调用以获取新的验证码质询。这是一个例子:

请参阅append()操作的jQuery API文档:http://api.jquery.com/append/

HTML:

...
<div id="login_container">
<form> 
 <input type="text" id="username_reg"></input>
 <input type="text" id="email_reg"></input>
 <input type="password" id="password_reg"></input>
 <input type="password" id="cpassword_reg"></input>
</form></div>
<div id="captcha_template" style="display:none;">
 <span id="captcha_reg">
       <?php 
           require_once("recaptchalib.php");
           echo recaptcha_get_html("mypubkey"); 
       ?>
 </span>
</div>
...

JQuery的:

$(document).ready(function() {
    // This will move the `#captcha_reg` span and its contents to the `#login_container` div when the DOM is ready.
    $('#login_container').append($('#captcha_reg'));
});