Другое Решение по интеграции reCaptcha v3 в Simpla CMS

anadikt

Гуру форума
Регистрация
28 Янв 2010
Сообщения
435
Реакции
86
1. Заходим на сайт Для просмотра ссылки Войди или Зарегистрируйся

Получаем ключи, которые потом будет записывать

2. В любую форму добавляем:

Код:
<input type="hidden" name="recaptcha_response">

3. Добавляем в файлы .tpl:

Код:
{literal}
<style>.grecaptcha-badge {visibility: hidden;}</style>
<script src="https://www.google.com/recaptcha/api.js?render=__PUBLIC_KEY__"></script>
<script>
    grecaptcha.ready(function() {
        grecaptcha.execute('__PUBLIC_KEY__', {action: 'submit'}).then(function(token) {
            grecaptcha.value = token;
            //объект формы
            $("form.ajax_form").find("input[name='recaptcha_response']").val(token);
        });
    });
</script>
{/literal}

4. И в любом View где надо проверять:

Код:
function google_captcha()
{
    if(isset($_POST['recaptcha_response']))
    {
        $recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify';
        $recaptcha_secret = "__SECRET_KEY__";
        $recaptcha_response = $_POST['recaptcha_response'];
        $recaptcha = file_get_contents($recaptcha_url . '?secret=' . $recaptcha_secret . '&response=' . $recaptcha_response);
        $recaptcha = json_decode($recaptcha);
        //проверка на очки
        if(isset($recaptcha->score) && $recaptcha->score >= 0.5)
            return true;
    }
    return false;
}

Ну и вызов google_captcha() для проверки _PUBLIC_KEY__ и __SECRET_KEY__ вводите тот что вам гугл выдал
 
1. Заходим на сайт Для просмотра ссылки Войди или Зарегистрируйся

Получаем ключи, которые потом будет записывать

2. В любую форму добавляем:

Код:
<input type="hidden" name="recaptcha_response">

3. Добавляем в файлы .tpl:

Код:
{literal}
<style>.grecaptcha-badge {visibility: hidden;}</style>
<script src="https://www.google.com/recaptcha/api.js?render=__PUBLIC_KEY__"></script>
<script>
    grecaptcha.ready(function() {
        grecaptcha.execute('__PUBLIC_KEY__', {action: 'submit'}).then(function(token) {
            grecaptcha.value = token;
            //объект формы
            $("form.ajax_form").find("input[name='recaptcha_response']").val(token);
        });
    });
</script>
{/literal}

4. И в любом View где надо проверять:

Код:
function google_captcha()
{
    if(isset($_POST['recaptcha_response']))
    {
        $recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify';
        $recaptcha_secret = "__SECRET_KEY__";
        $recaptcha_response = $_POST['recaptcha_response'];
        $recaptcha = file_get_contents($recaptcha_url . '?secret=' . $recaptcha_secret . '&response=' . $recaptcha_response);
        $recaptcha = json_decode($recaptcha);
        //проверка на очки
        if(isset($recaptcha->score) && $recaptcha->score >= 0.5)
            return true;
    }
    return false;
}

Ну и вызов google_captcha() для проверки _PUBLIC_KEY__ и __SECRET_KEY__ вводите тот что вам гугл выдал
а еще проще, сделать плагин и не нужно дублировать один и тот же код в view и никаких literal и светить ключи
 
Назад
Сверху