Что не так я делаю при проверке результата reCaptcha?

Установил reCaptcha на сайт и подключил. Но при проверке результата в ответ приходит сообщение об ошибке: invalid-input-response.

Проверку выполняю так:
if($rcvf = curl_init())
{
      curl_setopt($rcvf, CURLOPT_URL, "https://www.google.com/recaptcha/api/siteverify");
      curl_setopt($rcvf, CURLOPT_POST, true);
      curl_setopt($rcvf, CURLOPT_POSTFIELDS, "secret=" . $reCaptcha_privatekey . "&response=" . $cresp . "&remoteip=" . $_SERVER['REMOTE_ADDR']);
      curl_setopt($rcvf, CURLOPT_RETURNTRANSFER, true);
      $rcvq = curl_exec($rcvf);
      curl_close($rcvf);
      $rcvr = json_decode($rcvq, true);
      if($rcvr['success']) return 1;
      else return 0;
}

Переменная $cresp - ответ пользователя. Он передаётся в эту функцию для проверки прямо из скрипта-обработчика формы. С ответом всё вроде бы верно. Он имеет, к примеру, следующий вид:
03AHJ_VutTIPGMDR0p1FfaPwfzYGtD6CpxEAfTgRg4cSw8j5HOFFWARVIR6RwGNw4rZlvEvpA78ynbPdwgPpvZDnJL111skCpOXNbaqZbfo6HL1U6ykM2iMyRD2qYDfdZg4yzPbdC4b17kvNVokgoFczIN1Gbnz8tm7vboznoiNPeJeeH6ty_gnyTKMFjzNld8knfoRYufgqmgUvp3wOmewt2LTQKWEepDuhJ3BvSIbbkuyzEswsbueUbM0eb1L0AgsazaR0iO6Iaikwx1gOw69yW2gqLPAdCxnenNxwOiCRauzz5vNKkUso7DkTndYPvFDYbV650RAIug4hRUqIRqk_c1xh4FvsfU67emlD18KsUkL_IyAYcxZWdnK7vqOpOYmr8isFhfiVE2RC_IHwWJY9O13KfubldXY1GikESpTMoZ7MxDYwIrkhKyA3EtXZHAt0_RhVsN


В php.ini переменная post_max_size равна 999M. В чём может быть проблема?
  • Вопрос задан
  • 4969 просмотров
Решения вопроса 1
ak-o
@ak-o
web-developer
у меня вот такой простецкий класс:
class ReCaptcha {

    private $captcha_key;
    private $captcha_url;

    public function __construct() {
        $this->captcha_key = APP_CAPTCHA_KEY;
        $this->captcha_url = APP_CAPTCHA_URL;
    }

    public function validateCaptcha($captcha) {
        $validateCaptcha = file_get_contents($this->captcha_url.'?secret='.$this->captcha_key.'&response='.$captcha.'&remoteip='.$_SERVER['REMOTE_ADDR']);
        $validateCaptcha = json_decode($validateCaptcha);
        if(!$validateCaptcha->success) {
            throw new Exception('Wrong captcha');
        }
        return $validateCaptcha->success;
    }

}

Давно в него не лазил, может что-то изменилось ,но судя по моему классу в ответе должен быть json , а не какая то мутная строка.
Если хочешь через Curl в ответе выше посмотри как сделано, там тоже Curl между прочим есть, и сокеты
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы