我的reCaptcha现在使用ajax实现到我的注册过程中。
目前无论在验证码文本字段中输入什么内容,它都无法验证。它只是不断给我输入新词。
我认为这是因为我需要测试用户是否输入了正确的验证码答案。我需要发送一个POST请求。
我不知道该怎么做..我以前从来没有这样做过,文档对我来说不够清楚..
我很感激我能得到的任何帮助。
这是我的代码:
$(document).ready(function(){
$('#fhjoinForm').submit(function(e) {
register();
e.preventDefault();
});
});
function register()
{
hideshow('loading',1);
error(0);
$.ajax({
type: "POST",
url: "submit.php",
data: $('#fhjoinForm').serialize(),
dataType: "json",
success: function(msg){
if(parseInt(msg.status)==1)
{
Recaptcha.create("pub key xxxxxxxxxxx",
"recaptcha_div",
{
theme: "clean",
callback: function(){
// what to do on success
window.location=msg.txt;
}
}
);
}
else if(parseInt(msg.status)==0)
{
error(1,msg.txt);
}
hideshow('loading',0);
}
});
}
function hideshow(el,act)
{
if(act) $('#'+el).css('visibility','visible');
else $('#'+el).css('visibility','hidden');
}
function error(act,txt)
{
hideshow('error',act);
if(txt) $('#error').html(txt);
}
这是我的帖子请求
<?php
require_once('recaptchalib.php');
$publickey = "pub key hidden"; // you got this from the signup page
$privatekey = "priv key hidden";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if ($resp->is_valid) {
?>success<?
}
else
{
die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
"(reCAPTCHA said: " . $resp->error . ")");
}
?>
答案 0 :(得分:1)
您的jQuery代码看起来像是在提交表单后创建reCAPTCHA,因为它在PHP尝试验证后在success()函数中创建它。但实际上,应首先创建并显示reCAPTCHA。
然后在表单提交运行寄存器上,让PHP检查值。