的Recaptcha形式是这样的:如何jQuery验证ReCaptcha?
<script type="text/javascript"> var RecaptchaOptions = {"theme":"red","lang":"en"}; </script><script type="text/javascript" src="https://www.google.com/recaptcha/api/challenge?k=6LeThAsTAAAAAKYRjSpA8XZ1s4izK65hYr9ulCiD"> </script><noscript> <iframe src="https://www.google.com/recaptcha/api/noscript?k=6LeThAsTAAAAAKYRjSpA8XZ1s4izK65hYr9ulCiD" height="300" width="500" frameborder="0"> </iframe><br> <textarea name="recaptcha_challenge_field" rows="3" cols="40"> </textarea> <input type="hidden" name="recaptcha_response_field" value="manual_challenge"> </noscript>
和ZF2用于验证码的验证器是这样的:
$recaptcha = new ZendService\ReCaptcha\ReCaptcha(PUB_KEY, PRIV_KEY);
$html = $recaptcha->getHTML();
$result = $recaptcha->verify($_POST['recaptcha_challenge_field'], $_POST['recaptcha_response_field']);
if (!$result->isValid()) {
// invalid
} else {
// valid
}
是可以远程验证它是这样的:https://jqueryvalidation.org/remote-method
我在下面的远程php文件中试过,它不起作用:
$recaptcha = new ZendService\ReCaptcha\ReCaptcha(PUB_KEY, PRIV_KEY);
$result = $recaptcha->verify($_GET['recaptcha_challenge_field'], $_GET['recaptcha_response_field']);
if (!$result->isValid()) {
echo json_encode(false);
} else {
echo json_encode(true);
}
和JS本身是:
$().ready(function() {
$("#contact").validate({
rules: {
recaptcha_response_field: {
required: true,
remote: "json.php"
}
}
});
});
是有可能在全部或我做错了什么? ()不推荐。使用`$(文件)。就绪(函数()`代替
按照jQuery的文档,'$()。就绪(函数'还有,你做了什么样的故障排除?是否在正确的位置调用了'json.php'并被调用?你是否正在用控制台检查Ajax调用?另外,除非使用'remote'的'data'选项,否则只将'recaptcha_response_field'的值发送到你的PHP脚本 – Sparky
由于同样形式的其他字段使用相同的json.php进行远程验证,所以我假设它被调用,我会尝试你的版本,并用控制台进行检查。 – user4271704
如何使用数据选项以及如何发送recaptcha_challlenge_field t OO? @Sparky – user4271704