На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Установка рекапчи на сайт и несколько их на одной странице


Мне приходилось разрабатывать капчи самостоятельно, но, стоит честно заметить, что все они не дотягивают до уровня рекапчи. Да что говорить – сам гугл её использует. И вот, на одном из проектов, надо было установить капчу (поставить защиту от накрутки) и я решил поставить именно рекапчу. И эта, казалось бы элементарная процедура, вызвала некоторые сложности. Именно о них и пойдет речь ниже.

Установка рекапчи

Начинается все довольно просто. Переходим сюда, добавляем сайт и получаем какой-то набор ключей без примеров, как ими пользоваться. Не унываем и начинаем копать.

Сначала добавляем на страницу

<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
Получаем пост запрос

$recaptcha=$_POST['g-recaptcha-response'];
Настраиваем капчу

$google_url="https://www.google.com/recaptcha/api/siteverify";
$secret="ваш_секретный_ключ";
$ip=$_SERVER['REMOTE_ADDR'];
$url=$google_url."?secret=".$secret."&response=".$recaptcha."&remoteip=".$ip;
И если все в порядке

if(!empty($recaptcha)){
Инициализируем курл и отправляем запрос по адресу гугла

$curl = curl_init();
curl_setopt($curl,CURLOPT_URL, $url);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
$res = curl_exec($curl);
curl_close($curl);
$res= json_decode($res, true);
Если запрос подтвержден

if($res['success']){
То что-то делаем

//что-то делаем
}
}
На странице не забываем добавить в форму класс

<div class="g-recaptcha" data-sitekey="публичный_ключ" ></div>
Теперь все отлично у нас работает.



Несколько рекапч на одной странице

Однако, если вы попробуете добавить две или более рекапчи на одну страницу, то у вас будет отображаться только одна. Это не баг – разработчик дал пояснение, что только одна рекапча может отображаться на странице в один момент времени. Неужели нет выхода? Есть! Мы используем некоторую хитрость и JavaScript. В начале страницы вставьте такую функцию:

<script type="text/javascript">
        var onloadCallback = function() {
        mysitekey = .'публичный_ключ';
        grecaptcha.render('recaptcha1', {
        'sitekey' : mysitekey
        });
        grecaptcha.render('recaptcha2', {
        'sitekey' : mysitekey
        });
        };
    </script>
	
А в нужных местах вот эти дивы:

<div class="g-recaptcha" id="recaptcha1"></div>
<div class="g-recaptcha" id="recaptcha2"></div>
Здесь мы пользуемся методом grecaptcha.render и динамически вызываем рекапчу. Работает? Работает!



Итак, вот так просто можно поставить рекапчу на сайт, причем сразу несколько штук. Если у вас есть вопросы по поводу капчи, защиты сайта или любые другие по скриптам или расширению функциональности сайтов, то вы в любое время можете написать мне на почту up777up@yandex.ru или прямо в скайп up777u2 – за небольшое денежное вознаграждение я вам с удовольствием помогу. Выполню практически любые работы по сайтам, блогам, порталам, форумам – на php, js.


Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.



тегизаметки, капча, рекапча, php, сайтостроение





Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Как заставить работать джойстик в любой игре
.NET Framework и среда Common Language Runtime


© upread.ru 2013-2020
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.