的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