Проверка Google recaptcha v2 в php - нулевой ответ - PullRequest
1 голос
/ 13 января 2020

За последние несколько месяцев я использовал recaptcha v2 на нескольких php сайтах. недавно все они перестали работать. Страница администратора гласит: «Мы обнаружили, что ваш сайт не проверяет решения reCAPTCHA». Я не изменил ни один из моих кодов в это время, поэтому, конечно, проблема не в этом, и я вижу, что я все еще успешно фиксирую ответ пользователя, но я не знаю, что я могу сделать, чтобы получить формы снова работает Я пытался воссоздать новые ключи для одного из сайтов, но это не имело значения. Кто-нибудь еще испытывал это? Это соответствующий код подтверждения, который я использую ...

    if ($_SERVER["REQUEST_METHOD"] == "POST") {

    $secretKey = 'the-key-I-was-given';
    $captcha = $_POST['g-recaptcha-response'];

    if(!$captcha){
      header('Location: nocheck.html');
      exit;
    }

    $mail_to = "my-email-address";
    $name = $_POST['name'];
    $visitor_email = $_POST['email'];
    $message = $_POST['message'];

    $email_from = $_POST['email'];
    $subject = "Message from ....";
    $email_body = "You have received a new message from $name.\n".
     "Here is the message:\n\n $message\n\n";

    if ( empty($email_from) OR !filter_var($email_from, FILTER_VALIDATE_EMAIL) OR empty($subject) OR empty($email_body)) {
        http_response_code(400);
        echo '<p class="alert alert-warning">Please complete all fields on the form and try again.</p>';
        exit;
    }

    $ip = $_SERVER['REMOTE_ADDR'];
    $responsedata=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secretKey."&response=".$captcha."&remoteip=".$ip);
    $responseKeys = json_decode($responsedata,true);

    if(intval($responseKeys["success"]) !== 1) {
      echo '<p class="alert alert-warning">Oops! Captcha verification has failed. Please email me instead at my-email-address. Thank you.</p>';
    } else {

Кажется, что ответ каждый раз равен 0, поэтому ошибка проверки не удалась. Любые указатели с благодарностью приняли.

1 Ответ

0 голосов
/ 14 января 2020

У меня похожая проблема. Я поменял хост 2 недели на go и тот же код ReCAPTCHA больше не работает. Я также получаю то же сообщение в консоли администратора Recaptcha: «Мы обнаружили, что ваш сайт не проверяет решения reCAPTCHA. Это необходимо для правильного использования reCAPTCHA на вашем сайте. Для получения дополнительной информации см. Наш сайт разработчика информация. "

Я думаю, что ссылка на Google Developers важна, но я не могу понять, что делать. Вы (Марк) загружаете журнал ошибок с сервера? Он генерируется в папке root после каждого сбоя ReCaptcha. Я скачиваю его по FTP и читаю последнюю ошибку. У меня было много следующих 5 ошибок.

[12-Jan-2020] Error 1: PHP Warning:  require_once(cgi-bin/ReCaptcha.php): failed to open stream: No such file or directory in /public_html/submit2.php on line 2

Я: Я думал, что мои пути к файлам были неправильными, но я изменил их, и ничего не произошло, я думаю, что попробую это снова. т.е. Ln 2: require_once ('cgi-bin / ReCaptcha. php'); изменено на Ln 2: require_once ('/ cgi-bin / ReCaptcha. php'); не работает.

[12-Янв-2020] Ошибка 2: PHP Неустранимая ошибка: require_once (): Не удалось открыть обязательное 'cgi-bin / ReCaptcha. php' (include_path = '. : / opt / cpanel / ea-php72 / root / usr / share / pear ') в /public_html/submit2.php в строке 2 Я: Понятия не имею, почему он там смотрел? Строка 2 submit2. php - это пример выше.

[13-Jan-2020 00:00:55 UTC] Ошибка 3: PHP Предупреждение: file_get_contents (): https: // обертка отключено в конфигурации сервера: allow_url_fopen = 0 в /public_html/cgi-bin/Post.php в строке 68 Me: строка 68 сообщения. php читает: возвращение file_get_contents (self :: SITE_VERIFY_URL, false, $ context) ; allow_url_fopen был упомянут 04FS, но я не знаю, что он имел в виду.

[13-Jan-2020 00:00:55 UTC] Ошибка 4: PHP Предупреждение: file_get_contents (https://www.google.com/recaptcha/api/siteverify ): не удалось открыть поток: не удалось найти подходящую оболочку в /public_html/cgi-bin/Post.php в строке 68 Me: строка 68 снова ...

[14 января -2020 02:53:18 UTC] Ошибка 5: PHP Ошибка разбора: синтаксическая ошибка, неожиданный «$ secret» (T_VARIABLE) в /public_html/submit2.php в строке 11 Я: Это была моя ошибка - отсутствует точка с запятой после секретного ключа (после того, как я сегодня сделал новые ключи) также сбой после того, как я исправил его.

Надеюсь, это поможет, извините, если это не так. Если я заставлю это работать, я отправлю снова.

...