Google ReCaptcha v2 + Curl

09.04.2019  16:31

Столкнулся с засадой, что на сервере закручены гайки по безопасности и некоторые php-функции не работают, например, file_get_contents.
Переделываем на curl:

$response = $_POST["g-recaptcha-response"];
  $url = 'https://www.google.com/recaptcha/api/siteverify';
  /* закомментированный вариант может работать не на всех серверах
$data = Array(
    'secret' => 'your_secret_key',
    'response' => $_POST["g-recaptcha-response"]
  );
  $options = Array(
    'http' => Array(
      'method' => 'POST',
      'content' => http_build_query($data)
    )
  );
  $context  = stream_context_create($options);
  $verify = file_get_contents($url, false, $context);*/
// работающий код, если установлен curl
  $url .= '?secret=your_secret_key&response='.$_POST["g-recaptcha-response"];
  $ch = curl_init(); 
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
   curl_setopt($ch, CURLOPT_URL, $url);
   $verify = curl_exec($ch);
   curl_close($ch);
   // end
  $captcha_success=json_decode($verify);
  if ($captcha_success->success==false) {
	  echo 'Ошибка, не пройдена проверка на каптчу.';
	  // exit;
    // echo "Ты робот! Не люблю тебя!";
  }
  else if ($captcha_success->success==true) {
    //mail
  }


в HTML:
в head подключаем https://www.google.com/recaptcha/api.js
в форму слой с class="g-recaptcha" data-sitekey="your_site_key"


Проверяем, радуемся!

Зарегистрировать новый сайт для каптчи тут. Выбираете V2 Checkbox и ВАЖНО домены добавляете без протокола (без http и https), например, blogovoe.ru.

P.S.: Captcha — зло, которое всех бесит. Есть варианты защиты без каптчи: Простая идеальная защита форм от спам-ботов (пример).
Андрей Панёвин
Здравствуйте! Я — Андрей Панёвин и занимаюсь профессиональной разработкой сайтов на платформе 1С-Битрикс (исключительно программирование). Есть вопросы по статье? Могу подсказать и помочь по скайпу (andrey.panevin.ru), WhatsApp (+7-911-091-0670) или перепиской в ВК.
1000 р./час.



перейти в Блог

Ударим лайками по бездорожью, разгильдяйству и бюрократизму!


Ключевые слова (тэги): PHP 68  web-программирование 92  

Вам есть что сказать — ну я же чую.
Высказаться о наболевшем, я выслушаю-:
Имя


email (не публикуется)