Моя реализация reCaptcha не работает. Я изучил документацию от Google, но она не будет работать.
Плагин я реализовал так:
<form role="form" name="formular" method="post" onsubmit="return chkFormular()">
<div class="form-group" id="name">
<label class="control-label" for="name">Name</label>
<input type="text" class="form-control" name="name" placeholder="Name">
</div>
<div class="g-recaptcha" data-sitekey="my_public_key"></div>
<button type="submit" class="btn btn-default">Abschicken</button>
</form>
Капча работает отлично. Но теперь я хочу проверить это так:
require_once('../php/recaptchalib.php');
$privatekey = "my_private_key";
$publickey = "my_public_key";
# the response from reCAPTCHA
$resp = null;
# was there a reCAPTCHA response?
if( $_POST["recaptcha_response_field"] )
{
$resp = recaptcha_check_answer (
$privatekey, $_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]);
if( $resp->is_valid )
{
//send_mail
mail();
}
else {
if( $resp->error == 'incorrect-captcha-sol') {
// do something
}
}
}
Но это не вызовет mail()
метод.
РНР mail
Функция имеет три обязательных аргумента. Скорее всего, это просто провал из-за этого. Вы также должны рассмотреть возможность использования недавно выпущенная версия reCAPTCHA.
Я могу решить эту проблему самостоятельно.
Я вставляю капчу, как это в моей форме:
<div class="g-recaptcha " data-sitekey="6Ldj_v4SAAAAAF8dEtmmJ0kv8kkLLEJuQfcdCOMZ"></div>
И тогда я добавляю этот php-скрипт:
if (isset($_POST["g-recaptcha-response"]) && !(empty($_POST["g-recaptcha-response"]))) {
//send mail here
}
Хитрость в том, что «g-recaptcha-response» в посте пуст, если капча не была решена. В противном случае появляется нечитаемая строка.