Страницы

Поиск по вопросам

пятница, 13 марта 2020 г.

Как сделать проверку reCAPTCHA?

#php #recaptcha


Как в рекапче проверить прошел юзер проверку или нет?
Для тех кто не в курсе:
Как отправить POST запрос на url: https://www.google.com/recaptcha/api/siteverify
с параметрами: secret, response, remoteip?
И полученный ответ сервера с этого запроса (там выдает json), раскодировать и отправить
по переменным?

Гугл не помог, прошу примеров. Заранее спасибо.
    


Ответы

Ответ 1



рекапча принимает get запросы $url = 'https://www.google.com/recaptcha/api/siteverify?secret=YOU_SECRET_KEY&response='.(array_key_exists('g-recaptcha-response', $_POST) ? $_POST["g-recaptcha-response"] : '').'&remoteip='.$_SERVER['REMOTE_ADDR']; $resp = json_decode(file_get_contents($url), true); if ($resp['success'] == true) { //все хорошо } else { // капча не решена } нужно, чтобы капча была в самой форме, где у вас все инпуты

Ответ 2



$rCode = $_POST['g-recaptcha-response']; $rUrl = 'https://www.google.com/recaptcha/api/siteverify'; $rSecret = 'Твой секретный ключ'; $ip = $_SERVER['REMOTE_ADDR']; $curl = curl_init($rUrl); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded')); curl_setopt($curl, CURLOPT_POSTFIELDS, 'secret='.$rSecret.'&response='.$rCode.'&remoteip='.$ip); curl_setopt($curl, CURLINFO_HEADER_OUT, false); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $res = curl_exec($curl); curl_close($curl); $res = json_decode($res); if ($res->success) { //Капча введена верно .... } else { //Это бот или человек который не умеет пользоваться капчой .... }

Ответ 3



$curl = new CurlHelper([ CURLOPT_URL => GOOGLE_RECAPTCHA_VALIDATE_URL, CURLOPT_POST => TRUE, CURLOPT_POSTFIELDS => http_build_query([ 'secret' => GOOGLE_RECAPTCHA_SECRET_KEY, 'response' => $_POST['g-recaptcha-response'], 'remoteip' => $_SERVER['REMOTE_ADDR'], ]), CURLOPT_RETURNTRANSFER => 1, ]); $result = $curl->send(); $validation = json_decode($result['content']); if (empty($validation->success) || $validation->success === false) { $errors['captcha'] = 'invalid'; }

Комментариев нет:

Отправить комментарий