Как сделать капчу "Я не Робот" от гугла. Краткая инструкция
Идете в гугл: https://www.google.com/recaptcha/admin и получаете две константы. В конфигурации прописываете две переменные:// Ключ (Добавьте этот ключ в HTML-код сайта.)
define('reCAPTCHA_sitekey','6Lexxxx'); // если неопределена, то запрашиваться не будет
// Секретный ключ (Этот ключ нужен для связи между вашим сайтом и Google. Никому его не сообщайте)
define('reCAPTCHA_secretkey','6Lexxx'); // получить здесь https://www.google.com/recaptcha/admin
Сторона клиента. Форма ввода капчи
<?if(defined('reCAPTCHA_sitekey')){?>
<script>
var verifyGrecaptcha=undefined;
var verifyCallback = function(response) {
verifyGrecaptcha=response;
};
</script>
<div class="g-recaptcha" data-sitekey="<?=reCAPTCHA_sitekey?>" data-callback="verifyCallback" data-expired-callback="verifyCallback"></div>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<?}else{?>
<script>
var verifyGrecaptcha=1;
</script>
<?}?>
при отправке формы проверяю:
if(verifyGrecaptcha==undefined){alert('Подтвердите, что Вы - не робот!');return false;}
Проверка на сервере правильности ввода капчи
Параметры и документация здесь:- https://developers.google.com/recaptcha/docs/verify
- https://developers.google.com/recaptcha/docs/display#render_param
<?
list($headers,$body,$info)=ReadUrl::ReadWithHeader('https://www.google.com/recaptcha/api/siteverify',
'secret='.reCAPTCHA_secretkey.
'&response='.urlencode($_POST['g-recaptcha-response']).
'&remoteip='.getenv('REMOTE_ADDR'),
['cache'=>0,'timeout'=>10]);
if($body){
$recaptcha =json_decode($body,!0);
if(!empty($recaptcha['success'])&&$recaptcha['success']){
// Здесь все отлично!!!
}else{
error("Неверная капча. Попробуйте ещё раз.");
}
}else{
SendAdminMail('Capcha error', "headers=".var_export($headers,!0)."\nbody= ".var_export($body,!0)."\ninfo=".var_export($info,!0));
error("Не удалось проверить капчу. Попробуйте ещё раз.");
}
?>
.
Прокомментировать/Отблагодарить