Логическая captcha (Капча) JavaScript


Как показывает практика, не всегда удобно вводить текстовую капчу, особенно так популярную reCaptha. Ее не только роботу, ее и человеку достаточно трудно ввести. Поэтому как альтернативный вариант я предлагаю использовать простую логическую капчу.

Она представляет собой сумму двух чисел, которую нужно ввести в поле ввода. JavaScript код представлен ниже:

    var a = Math.ceil(Math.random() * 10);
    var b = Math.ceil(Math.random() * 10);
    var c = a + b;
    
    function captcha(){
        document.getElementById('text').innerHTML='Сколько будет ' + a + ' + ' + b + '?';
    }
    
    function checkCaptcha(){
        var d = document.getElementById('captchaEdit').value;
        
        if(d == c) {
            alert('Правильный ответ!');
        }
        else {
            alert('Неправильный ответ, попробуйте еще раз.')
        }
    }

Это наш HTML-код (взят только кусок с <body> ):

<body onload="captcha()"> 
    <p id="text"></p>
    <input type="text" id="captchaEdit" value="" />
    <input type="submit" value="Отправить" onClick="checkCaptcha();" />
</body> 

Исходя из него мы видим, что при загрузке страницы срабатывает функция captcha(). Она добавляет необходимый текст в тег <p>

Далее мы вводим необходимый ответ в поле и нажимаем кнопку, при клике на которую вызывается функция проверки капчи checkCaptcha()

var d = document.getElementById(‘captchaEdit’).value; — берется значение текстового поля, обращаемся к нему используя атрибут id=’captchaEdit’.

if(d == c) — Далее происходит проверка, совпадает ли введенное значение с суммой произвольных чисел.
И в зависимости от результата два варианта ответа :)

Вместо алертов можно написать любое другое развитие событий, например выводить текст под текстовым полем извещающий о том или ином результате.

One thought on “Логическая captcha (Капча) JavaScript

  1. Невозможно связать до купы с формой, это весь синтаксис учить надо. Сама капча классная, но куда ее одну деть… вот бы ее к комментарию. Но это невозможно, жалко.

Comments are closed.