Моя реализация 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
PHP имеет три обязательных аргумента. Из-за этого, возможно, просто не удается. Вы также должны рассмотреть возможность использования недавно выпущенной версии 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" в сообщении пуст, если captcha не решил. В противном случае появляется нечитаемая строка.
https://www.google.com/recaptcha/api/siteverify?secret=your_secret&response=response_string&remoteip=user_ip_address
. В противном случае, я могу просто сделать так, чтобы мой спамбот отправил что-нибудь в качестве ответа, и это сработает.
var_dump($resp->is_valid)
? Вы не показали никаких шагов по устранению неполадок, и я все еще не уверен, что это не проблема сmail
звонком, тем более что вы не показываете свой реальный код.