#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'; }
Комментариев нет:
Отправить комментарий