PHP

Идеальная защита от ботов без капчи

Защита от ботов методом подсчета количества нажатий по клавиатуре + последующее сравнение количества введенных слов (на стороне сервера).

В поле для ввода текста добавим атрибут "Onkeyup":

<textarea form="contact_form" name="QUESTION" placeholder="Сообщение" onkeyup="count_keyup()"></textarea>

затем добавим JS код:

var ct = 0; 
//increase countme input value: 
function count_keyup() {
   document.getElementById('count').value = ++ct; 
}

На стороне сервера напишем код подсчета кол-ва символов и добавления бота в ЧС:

if (isset($data['countme'])) {
    $words_count = str_word_count($data['QUESTION'], 0,
        "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя");
    if ($data['countme'] == 0) {
        $arLoadProductArray['IBLOCK_ID'] = 133;//Сообщения с форм ---> ловушка для ботов
        if ($PRODUCT_ID = $el->Add($arLoadProductArray)) {
            echo json_encode(['status' => false, 'msg' => 'Ваша заявка не принята!'], JSON_UNESCAPED_UNICODE);
        } else {
            echo json_encode(['status' => false, 'msg' => strip_tags($el->LAST_ERROR)], JSON_UNESCAPED_UNICODE);
        }
    }
}

 

Афоризм дня:
Когда слово не убьет, то палка не поможет. (652)

Leave a reply