reCaptcha не проверяет

0

Моя реализация 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().

Теги:
recaptcha

2 ответа

0

Функция mail PHP имеет три обязательных аргумента. Из-за этого, возможно, просто не удается. Вы также должны рассмотреть возможность использования недавно выпущенной версии reCAPTCHA.

  • 0
    Хм, я думаю, вы меня не так поняли. Без капчи моя почта будет работать нормально. Я редактирую свой код и удаляю код отправки почты, потому что он работает нормально. И я использовал новую версию reCaptcha, но я не могу найти что-то в документации.
  • 0
    Тогда вам нужно объяснить, что не работает. Вы получаете ошибку? Что var_dump($resp->is_valid) ? Вы не показали никаких шагов по устранению неполадок, и я все еще не уверен, что это не проблема с mail звонком, тем более что вы не показываете свой реальный код.
Показать ещё 3 комментария
-2

Я могу решить проблему самостоятельно.

Я вставляю этот код в мою форму:

<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 не решил. В противном случае появляется нечитаемая строка.

  • 0
    Вам не хватает всей логики проверки. Вам необходимо отправить ответ по https://www.google.com/recaptcha/api/siteverify?secret=your_secret&response=response_string&remoteip=user_ip_address . В противном случае, я могу просто сделать так, чтобы мой спамбот отправил что-нибудь в качестве ответа, и это сработает.
  • 0
    я знаю, но как?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню